@avantf/dsh-mem 0.6.2 → 0.6.3
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 +56 -161
- package/lib/index.js +5 -2
- package/lib/interface-version.json +1 -1
- package/lib/types/envinit-bootstrap.d.ts +5 -2
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# @avantf/dsh-mem
|
|
2
2
|
|
|
3
|
-
DSH(DeepSeek Harness)原生记忆插件:给 agent
|
|
4
|
-
|
|
3
|
+
DSH(DeepSeek Harness)原生记忆插件:给 agent 一份可长期检索的**记忆**和一个**文档知识库**——
|
|
4
|
+
它跨会话记得你说过的事,也能把文档收进库里按语义查回来。装上后提供 8 个模型工具、三段用法提示
|
|
5
|
+
和两个主窗口标签页(记忆 / 知识)。
|
|
5
6
|
|
|
6
7
|
## 主要功能
|
|
7
8
|
|
|
@@ -13,216 +14,110 @@ DSH(DeepSeek Harness)原生记忆插件:给 agent 一份可长期检索的
|
|
|
13
14
|
- `kb_add` / `kb_list` / `kb_remove` / `kb_reindex`:新增文档(文本 / 文件 / URL,或批量导入目录,
|
|
14
15
|
同名拒绝)、列表(带出受管 `.md` 的绝对路径与切片详情)、删除、重建索引;
|
|
15
16
|
**改一篇既有文档就是改那份 `.md`**(用文件工具改,索引自动跟随)
|
|
16
|
-
- `kb_query`:跨「记忆事实 +
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
`.doc`/`.xls`/`.ppt` / 可执行文件)会被拒绝并说明检测到的类型;GBK/GB18030 等中文旧编码会自动解码
|
|
28
|
-
并在结果里标出 `encoding`。
|
|
29
|
-
- **知识可维护**:每篇文档在 `~/.avantf/knowledge/docs/<domain>/<source>/<title>.md` 留一份可编辑副本
|
|
30
|
-
(frontmatter 记着它属于哪篇文档)——用你自己的编辑器改,插件会在**其后任一工具调用结束时**自动把改动同步
|
|
31
|
-
回索引(先一次 `stat` 判漂移、再用正文哈希裁决,只重摄入真正改过的),「知识」页的「重新摄入」是手动兜底;
|
|
32
|
-
删除文档会连同这份副本一起删除,`source_uri` 指向的原文件始终不被改动。
|
|
33
|
-
- **可插拔、可降级**:语义后端 / 向量库都走内部注册表;模型、hnswlib、分词器任一缺失都自动降级
|
|
34
|
-
(FTS + 实体 / numpy 向量库 / 正则抽取),不会因此退出。
|
|
35
|
-
- **0.5.0 起不再有结果重排**:`Reranker` 接口、`rerank.*` 配置键、公开面的 `registerReranker` 与结果/统计里的
|
|
36
|
-
`rerank_*` 字段已整体移除(旧配置里的 `rerank:` 段会被当作未知键告警并忽略);可注册的检索面只剩语义后端与向量库。
|
|
37
|
-
- **两个主窗口标签页**(排在 对话 / 轨迹 之后):**记忆**(浏览、编辑、归档恢复、反馈、矛盾裁决)与
|
|
38
|
-
**知识**(文档列表,每行可查看切片 / 编辑 / 打开目录 / 重新摄入 / 删除;另有跨库查询与入库——
|
|
17
|
+
- `kb_query`:跨「记忆事实 + 文档切片」的统一检索,结果带来源标注,可据此引用原文
|
|
18
|
+
- **记忆与知识一起检索**:对记忆事实与文档切片做统一排序,两类结果处在同一分数刻度上,
|
|
19
|
+
所以"我之前定过的约定"和"文档里怎么写的"能一次问出来。
|
|
20
|
+
- **记忆是活的**:按活跃使用结算,支持有效期、遗忘、去重与修订链;同一主题的改动会被识别成
|
|
21
|
+
对旧事实的**修订**而不是简单叠加,写入时顺带做矛盾检测。
|
|
22
|
+
- **资料随手入库**:文本、本地文件、目录、URL 都能收;Markdown 按标题分块,PDF、`.docx`、`.xlsx`
|
|
23
|
+
等常见格式也能直接入库(转换过程有问题会明确回报,不静默丢内容)。
|
|
24
|
+
- **知识可维护**:每篇文档在数据目录里留一份可编辑的 Markdown 副本,用你自己的编辑器改,
|
|
25
|
+
插件会在其后自动把改动同步回索引;删除文档只删这份副本,你原来的文件不动。
|
|
26
|
+
- **两个主窗口标签页**(排在 对话 / 轨迹 之后):**记忆**(浏览、编辑、归档恢复、反馈、矛盾裁决)
|
|
27
|
+
与**知识**(文档列表,每行可查看切片 / 编辑 / 打开目录 / 重新摄入 / 删除;另有跨库查询与入库——
|
|
39
28
|
URL / 本地文件 / 本地目录 / 粘贴文本共用一个输入)。
|
|
40
29
|
- 系统提示词里只加**三段**用法提示(何时该主动记忆、何时该先查记忆、何时该先查知识库 / 怎么改一篇
|
|
41
|
-
|
|
30
|
+
既有文档)。
|
|
42
31
|
|
|
43
32
|
## 接入 dsh
|
|
44
33
|
|
|
45
34
|
```bash
|
|
46
|
-
#
|
|
47
|
-
# (pnpm / yarn)不会跟着装上,所以要显式装。
|
|
48
|
-
# 版本号建议写死:pnpm ≥ 10 的 minimumReleaseAge 会避开刚发布的版本,解析到的旧版本可能不认识
|
|
49
|
-
# 当前宿主(它的 peer 区间不含这个 dsh),那一单会被宿主的安装门禁直接拒绝并把 profile 回滚。
|
|
50
|
-
dsh plugin --profile <PROFILE> add @avantf/dsh-plugin-base@<version>
|
|
35
|
+
# 把插件装进你要用的 profile(依赖会自动装好,不用管别的)
|
|
51
36
|
dsh plugin --profile <PROFILE> add @avantf/dsh-mem@<version>
|
|
52
37
|
|
|
53
|
-
#
|
|
54
|
-
# 不影响记忆库本身——存储层用的是运行时自带的 node:sqlite,没有需要编译的数据库模块。
|
|
55
|
-
cd ~/.dsh/profiles/<PROFILE>
|
|
56
|
-
pnpm approve-builds --all # 勾选 nodejieba / hnswlib-node / onnxruntime,可按需
|
|
38
|
+
# 然后重启 dsh 生效
|
|
57
39
|
```
|
|
58
40
|
|
|
59
|
-
|
|
60
|
-
# 3) 挂载插件:装完通常什么都不用做。
|
|
61
|
-
#
|
|
62
|
-
# 本包声明了组合包(dsh.bundle.patch → 随包的 cordis.patch.yml),所以 `dsh plugin add` 装它时会
|
|
63
|
-
# 顺手把这个包选进 profile 的 dsh.profile.bundles(实测),挂载行由随包的 patch 插入;DSH Desktop
|
|
64
|
-
# 的「插件」页走的也是这条。只有两种情况才需要自己写那一行:
|
|
65
|
-
# · 用 npm / yarn 装(它们不认识 dsh.profile.bundles);
|
|
66
|
-
# · 手工编辑 profile 的包清单,而没有把本包选进 bundles。
|
|
67
|
-
# 两条路都做也不会挂两次:当前 dsh(0.1.7 / 0.2.0 线)的 loader 按条目 id 去重,只挂载一次(实测);
|
|
68
|
-
# 但 0.1.5 线(仍在本包 peer 区间内)上重复的行 id 会让 profile 树加载失败——所以始终二选一。
|
|
69
|
-
# · 前提:自动选中只在 `dsh plugin add` **跑完**那一刻发生。若它中途被构建提示(pnpm 的
|
|
70
|
-
# approve-builds)拦下(ERR_PNPM_IGNORED_BUILDS、非零退出),依赖装上了但组合包**不会被选中**,
|
|
71
|
-
# 事后再 add / install 也不会补选——先答完提示再装,或到 DSH Desktop 的「插件」页启用这个组合包。
|
|
72
|
-
#
|
|
73
|
-
# 手写的那一行,放在 ~/.dsh/profiles/<PROFILE>/cordis.patch.yml(不存在就新建):
|
|
74
|
-
- insert:
|
|
75
|
-
- id: avantf-mem
|
|
76
|
-
name: '@avantf/dsh-mem'
|
|
77
|
-
config:
|
|
78
|
-
mode: cordis # 进程内插件
|
|
79
|
-
# dataHome 建议省略(默认 ~/.avantf)。它是配置值,会被 AVANTF_HOME 压过。
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
# 4) 重启 dsh(宿主半边需重启,浏览器半边会热重载)
|
|
84
|
-
dsh web
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
### DSH Desktop
|
|
41
|
+
版本号可以不写,但建议指定一个明确版本。
|
|
88
42
|
|
|
89
|
-
Desktop
|
|
90
|
-
|
|
91
|
-
- **界面上只能装组合包**。Desktop 的「插件」页与 `plugin_manager` 只接受声明了 `dsh.bundle.patch`
|
|
92
|
-
的包(本包已声明):在页面上装它,它会把这个包选进 `dsh.profile.bundles`,并应用随包的
|
|
93
|
-
`cordis.patch.yml`——不用手写挂载行。
|
|
94
|
-
- **用它自带的 dsh**:`<安装目录>/resources/runtime/cli/bin/dsh.cmd`(或在设置里把 `dsh` 装进 PATH)。
|
|
95
|
-
- **重启应用**才生效:Desktop 的宿主半边与浏览器半边一起启动,不像 Web 那样热更。
|
|
96
|
-
|
|
97
|
-
Desktop 的宿主进程是 **Electron**(`NODE_MODULE_VERSION` 与同版本 Node 不同)。这正是本插件不依赖任何
|
|
98
|
-
SQLite 绑定的原因:存储层用运行时自带的 `node:sqlite`,它就在跑插件的那个进程里,没有预编译产物要匹配、
|
|
99
|
-
也不需要用户装 C++ 工具链。启动日志里 `sqlite=node:sqlite <版本>` 就是它;两个宿主写的是同一个 SQLite
|
|
100
|
-
文件格式,换宿主不需要迁移数据。
|
|
101
|
-
|
|
102
|
-
- 插件的 `@deepseek-ai/*` peer 由宿主提供(profile 上层的运行时解析表),`dsh plugin add` 不会另装一份。
|
|
103
|
-
**不要在 profile 里再装** `cordis` / `schemastery` / `dsh-tools`——两份对象身份会让工具与 typert
|
|
104
|
-
注册表对不上。
|
|
105
|
-
- `zod` 同样是**宿主提供的 required peer**(区间 `>=4.4.3 <5`,宿主的 dsh 自带):工具的 wire 与参数
|
|
106
|
-
schema 都用**这一份**。**不要在 profile 里单独装一份 `zod`**——两个副本的 schema 类型身份不同,
|
|
107
|
-
跨副本传 schema 对象会在运行期对不上。
|
|
43
|
+
**DSH Desktop**:在「插件」页里安装同一个包即可,装完重启应用;不用动命令行。
|
|
108
44
|
|
|
109
45
|
## 怎么用
|
|
110
46
|
|
|
111
|
-
|
|
47
|
+
工具是给模型用的,通常不用你手写;用日常说法提要求就行。最常见的几种:
|
|
112
48
|
|
|
113
49
|
```text
|
|
114
50
|
记住这条:发布窗口是每周四 20:00;验收标准是灰度零回滚。
|
|
115
51
|
```
|
|
116
52
|
|
|
117
53
|
```text
|
|
118
|
-
|
|
54
|
+
我之前定过的数据目录约定是什么?(返回命中事实与来源)
|
|
119
55
|
```
|
|
120
56
|
|
|
121
57
|
```text
|
|
122
|
-
把 ~/docs/cgroup-v2.pdf 收到知识库的 ops
|
|
58
|
+
把 ~/docs/cgroup-v2.pdf 收到知识库的 ops 域下。
|
|
123
59
|
```
|
|
124
60
|
|
|
125
61
|
```text
|
|
126
|
-
|
|
62
|
+
看看知识库里关于「内存保护」的原文。
|
|
127
63
|
```
|
|
128
64
|
|
|
129
|
-
|
|
130
|
-
|
|
65
|
+
```text
|
|
66
|
+
把「每周四发布」改成「每周三发布」,并说明依据。
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
改一篇已经入库的文档:让模型"更新这篇文档"即可;也可以用任意文件工具直接编辑那份受管
|
|
70
|
+
`.md`(先用 `kb_list` 拿到路径),改完会自动同步,「知识」页的「重新摄入」是手动兜底。
|
|
131
71
|
|
|
132
72
|
常见维护动作:
|
|
133
73
|
|
|
134
74
|
```text
|
|
135
|
-
|
|
136
|
-
|
|
75
|
+
检查记忆库的检索与索引状态。
|
|
76
|
+
把矛盾检测的积压扫一遍,逐条裁决。
|
|
137
77
|
```
|
|
138
78
|
|
|
139
|
-
###
|
|
79
|
+
### 相关性门槛:严格 / 宽松
|
|
140
80
|
|
|
141
|
-
|
|
142
|
-
`
|
|
143
|
-
实体 Jaccard `min_jaccard`(默认 `0.2`)——分数等于门槛保留,`0` = 关闭该腿(改在
|
|
144
|
-
`~/.avantf/configs/common.yaml` 的 `retriever` 节)。
|
|
81
|
+
「记忆」「知识」页的查询面板有**严格 / 宽松**选择(工具面的 `mem_recall` / `kb_query` 也接受
|
|
82
|
+
`floors: 'strict' | 'loose'`):
|
|
145
83
|
|
|
146
|
-
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
- **不传 `floors` 时的默认策略:严格档为空就自动放宽一次**:先按严格档跑;**仅当**它一条都没命中、且确实有
|
|
151
|
-
条目被门槛丢掉时,才用宽松档补跑一遍。只有宽松档真的产出结果才替换答案,结果里置 `relaxed: true`,面板显示
|
|
152
|
-
「(已自动放宽门槛)」;放宽也救不回时**原样返回严格档结果**(含"被门槛丢掉 N 条"的报告)。跨库查询只对
|
|
153
|
-
**合并后**的结果做这个决定,免得一条空库把放宽后的尾部混进另一条库的严格命中。
|
|
154
|
-
- **可解释性**:结果带生效门槛 `floors` 与每腿丢弃数 `dropped_by_floor`,所以「门槛挡掉的空」与「本来就没有」
|
|
155
|
-
能分开说——面板因此分别给出「严格门槛丢弃了 N 条,可切「宽松」重试」与「(宽松档下)确实没有相关结果」。
|
|
84
|
+
- **严格**(面板默认):只有明确够相关的才返回,所以"没有结果"是一个可信的答案。
|
|
85
|
+
- **宽松**:门槛更低,用来找回边角相关的条目——仍有一条底线,不是无门槛。
|
|
86
|
+
- **不选时**:先按严格跑;严格档一条都没命中、且确实有条目被门槛挡掉时,自动用宽松档补跑一次,
|
|
87
|
+
结果会标明「已自动放宽门槛」。门槛挡掉的空与真的没有,面板和结果里的数字能区分开。
|
|
156
88
|
|
|
157
89
|
## 配置、数据与提示词
|
|
158
90
|
|
|
159
|
-
- **数据目录**:默认 `~/.avantf
|
|
160
|
-
|
|
91
|
+
- **数据目录**:默认 `~/.avantf`。记忆库、知识库(含受管文档副本)与模型缓存都在其中;
|
|
92
|
+
环境变量 `AVANTF_HOME` 可以改变它。
|
|
161
93
|
- **配置**:`~/.avantf/configs/` 下的三份 YAML —— `common.yaml`(公共项,缺失时按注释模板自动创建)、
|
|
162
|
-
`memory.yaml`、`knowledge.yaml
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
刻意不出现任何领域名词(它同时服务开发、投研、日常等场景),只给判据与"事实型 / 规则型"两种形状:
|
|
94
|
+
`memory.yaml`、`knowledge.yaml`。只写你要改的项,其余取内置默认。
|
|
95
|
+
- **提示词文件**:`~/.avantf/prompts/` 下的 `mem-memory-usage.md`、`mem-knowledge-usage.md`、
|
|
96
|
+
`mem-kb-edit.md`。缺失或为空时插件写入默认内容,**只在启动时读一次**,改完重启生效。
|
|
97
|
+
可以按自己的领域改写:内置默认刻意不出现任何领域名词,只给判据与两种形状——
|
|
167
98
|
- 事实型:`用户不吃香菜;订餐默认备注不要香菜。`(谁 / 什么范围 / 偏好或要求或术语是什么)
|
|
168
|
-
- 规则型:`只有「注销式回购」减少总股本,库存股回购不减少——比较 EPS
|
|
169
|
-
-
|
|
170
|
-
|
|
171
|
-
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
记忆是过去的记录、不是当下指令,无关时可完全忽略。
|
|
175
|
-
同一主题用 `update` 纠正并附核实依据,不同事实新增。
|
|
176
|
-
不要把 `recall` 结果原样回记。
|
|
177
|
-
```
|
|
178
|
-
- **可选:中文时间窗检索腿**(0.6.0 起,**默认关闭**)。它在查询含中文时间表达时,把**事件时间**(写入时用
|
|
179
|
-
`event_date` 给出)落在窗口内的活跃事实作为额外一条腿参与融合——只增加候选、不删已有命中,也不会回退到写入时间。
|
|
180
|
-
在 `~/.avantf/configs/common.yaml` 打开:
|
|
181
|
-
```yaml
|
|
182
|
-
retriever:
|
|
183
|
-
time_window: true
|
|
184
|
-
```
|
|
185
|
-
打开前先看 `mem_admin stats` 的 `validity.coverage`(带事件时间的事实占比):覆盖率接近 0 时这条腿等于没开。
|
|
186
|
-
|
|
187
|
-
- **语义模型**:默认从 `hf-mirror.com` 下载并缓存,也可指向本地模型目录离线运行。
|
|
188
|
-
- **升级前先备份 `~/.avantf`**:数据库迁移是单向的,用旧版本打开新库会被明确拒绝。
|
|
189
|
-
|
|
190
|
-
## 升级 / 卸载 / 换版本
|
|
99
|
+
- 规则型:`只有「注销式回购」减少总股本,库存股回购不减少——比较 EPS 影响时要区分。`
|
|
100
|
+
- 不适合写进记忆:一次调查的过程叙述、数据表、命令与链接——依据归知识库文档,记忆里只留
|
|
101
|
+
**结论 + 位置**(路径 / 来源 / 名称);敏感信息同理,只记存放位置,不记明文。
|
|
102
|
+
- **升级前建议先备份 `~/.avantf`**:数据库迁移是单向的,用旧版本打开新库会被明确拒绝。
|
|
103
|
+
|
|
104
|
+
## 升级 / 卸载
|
|
191
105
|
|
|
192
106
|
```bash
|
|
193
|
-
#
|
|
107
|
+
# 升级:换版本号重装同一个包
|
|
194
108
|
dsh plugin --profile <PROFILE> add @avantf/dsh-mem@<version>
|
|
195
109
|
|
|
196
|
-
#
|
|
110
|
+
# 卸载
|
|
197
111
|
dsh plugin --profile <PROFILE> remove @avantf/dsh-mem
|
|
198
|
-
# 再清掉挂载项:用组合包装的,包名已随上一步从 profile 的 `dsh.profile.bundles` 里去掉,无需再动;
|
|
199
|
-
# 自己手写过那一行的,删掉 ~/.dsh/profiles/<PROFILE>/cordis.patch.yml 里那段 `- id: avantf-mem`
|
|
200
|
-
#(该文件顶层必须是 YAML 数组:删空就写 `[]`,否则 dsh 启动会拒绝加载)。
|
|
201
|
-
# DSH Desktop 的「插件」页上卸载会连着取消选中与依赖一起做。
|
|
202
112
|
```
|
|
203
113
|
|
|
204
|
-
|
|
114
|
+
两者都要重启 dsh 生效。卸载**不动 `~/.avantf`**:记忆库、知识库、模型缓存全部保留。DSH Desktop 在
|
|
115
|
+
「插件」页上卸载。
|
|
205
116
|
|
|
206
117
|
## 环境要求
|
|
207
118
|
|
|
208
|
-
- **Node `>=22.15.0 <23 || >=23.11.0`**、**pnpm
|
|
209
|
-
|
|
210
|
-
(22.15 / 23.11)。低于该下限(或该构建缺 FTS5)时插件照常挂载,但 8 个工具都回
|
|
211
|
-
`memory unavailable` 并给出原因,不会拖垮宿主启动
|
|
212
|
-
- `nodejieba` / `hnswlib-node` / `@huggingface/transformers` 都可选:缺失时分别降级为正则抽取 /
|
|
213
|
-
numpy 向量库 / 纯词法检索
|
|
214
|
-
- 插件自包含:检索与知识引擎在构建时已内联进产物,安装不需要额外的家族包。宿主提供的 peer 有两个:
|
|
215
|
-
底座 `@avantf/dsh-plugin-base`(安装时随插件一起装)与 `zod`(宿主的 dsh 自带那份)
|
|
216
|
-
|
|
217
|
-
## 从源码构建
|
|
218
|
-
|
|
219
|
-
构建只对着**已安装的全局 dsh**(`npm i -g @deepseek-ai/dsh`),不需要 harness 源码;在仓库根执行:
|
|
220
|
-
|
|
221
|
-
```bash
|
|
222
|
-
pnpm install
|
|
223
|
-
pnpm build:dsh mem # 插件两半(tsc + tsdown → lib/index.js + lib/client.js),随后自动跑挂载冒烟
|
|
224
|
-
pnpm pack:plugin:mem # 打包成"用户安装的那一个包"(断言引擎已内联、依赖版本已落成真实范围)
|
|
225
|
-
```
|
|
119
|
+
- **Node `>=22.15.0 <23 || >=23.11.0`**、**pnpm**
|
|
120
|
+
- 可选的原生加速件(分词 / 向量索引 / 本地嵌入模型)缺失时只会降低检索质量,不影响使用
|
|
226
121
|
|
|
227
122
|
## 许可
|
|
228
123
|
|
package/lib/index.js
CHANGED
|
@@ -17078,7 +17078,10 @@ async function loadFramework(options) {
|
|
|
17078
17078
|
}
|
|
17079
17079
|
/**
|
|
17080
17080
|
* Read the range a plugin declares in the nearest `package.json`: walk up from `from`,
|
|
17081
|
-
* preferring `peerDependencies` over `devDependencies`; `undefined` when none is
|
|
17081
|
+
* preferring `dependencies` over `peerDependencies` over `devDependencies`; `undefined` when none is
|
|
17082
|
+
* found. `dependencies` is the live declaration — the base ships as a normal dependency of the
|
|
17083
|
+
* plugins — while `peerDependencies` stays as the fallback for plugins built when the base was
|
|
17084
|
+
* declared a peer, and `devDependencies` covers a local checkout.
|
|
17082
17085
|
*/
|
|
17083
17086
|
async function readDependencyRange(from = process.cwd()) {
|
|
17084
17087
|
let current = from;
|
|
@@ -17108,7 +17111,7 @@ async function readDependencyRange(from = process.cwd()) {
|
|
|
17108
17111
|
const parsed = JSON.parse(text);
|
|
17109
17112
|
if (typeof parsed !== "object" || parsed === null) return void 0;
|
|
17110
17113
|
const manifest = parsed;
|
|
17111
|
-
return rangeOf(manifest["peerDependencies"]) ?? rangeOf(manifest["devDependencies"]);
|
|
17114
|
+
return rangeOf(manifest["dependencies"]) ?? rangeOf(manifest["peerDependencies"]) ?? rangeOf(manifest["devDependencies"]);
|
|
17112
17115
|
} catch {
|
|
17113
17116
|
return;
|
|
17114
17117
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* @module bootstrap
|
|
4
4
|
*/
|
|
5
5
|
/** The bootstrap version; the resolved framework must satisfy {@link supportedRange}. */
|
|
6
|
-
export declare const VERSION = "0.4.
|
|
6
|
+
export declare const VERSION = "0.4.2";
|
|
7
7
|
/**
|
|
8
8
|
* The framework interval this bootstrap can launch.
|
|
9
9
|
*
|
|
@@ -49,6 +49,9 @@ export declare function ensureFramework(options: EnsureFrameworkOptions): Promis
|
|
|
49
49
|
export declare function loadFramework<T = unknown>(options: EnsureFrameworkOptions): Promise<T | undefined>;
|
|
50
50
|
/**
|
|
51
51
|
* Read the range a plugin declares in the nearest `package.json`: walk up from `from`,
|
|
52
|
-
* preferring `peerDependencies` over `devDependencies`; `undefined` when none is
|
|
52
|
+
* preferring `dependencies` over `peerDependencies` over `devDependencies`; `undefined` when none is
|
|
53
|
+
* found. `dependencies` is the live declaration — the base ships as a normal dependency of the
|
|
54
|
+
* plugins — while `peerDependencies` stays as the fallback for plugins built when the base was
|
|
55
|
+
* declared a peer, and `devDependencies` covers a local checkout.
|
|
53
56
|
*/
|
|
54
57
|
export declare function readDependencyRange(from?: string): Promise<string | undefined>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@avantf/dsh-mem",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.3",
|
|
4
4
|
"description": "avantf-mem DSH native Cordis plugin: host service + tools + RPC + client tabs 记忆/知识",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -41,7 +41,6 @@
|
|
|
41
41
|
"node": ">=22.15.0 <23 || >=23.11.0"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
|
-
"@avantf/dsh-plugin-base": ">=0.3.0 <1.0.0",
|
|
45
44
|
"@deepseek-ai/cordis": "^4.0.0",
|
|
46
45
|
"@deepseek-ai/dsh-system-prompt": "^0.1.5-rc.2 || ^0.1.7-rc.2 || ^0.2.0-rc.2",
|
|
47
46
|
"@deepseek-ai/dsh-tools": "^0.1.5-rc.2 || ^0.1.7-rc.2 || ^0.2.0-rc.2",
|
|
@@ -67,6 +66,7 @@
|
|
|
67
66
|
}
|
|
68
67
|
},
|
|
69
68
|
"dependencies": {
|
|
69
|
+
"@avantf/dsh-plugin-base": ">=0.3.0 <1.0.0",
|
|
70
70
|
"exceljs": "^4.4.0",
|
|
71
71
|
"unpdf": "^1.8.1",
|
|
72
72
|
"yaml": "^2.5.0"
|
|
@@ -78,10 +78,10 @@
|
|
|
78
78
|
},
|
|
79
79
|
"devDependencies": {
|
|
80
80
|
"@avantf/dsh-plugin-base": ">=0.3.0 <1.0.0",
|
|
81
|
-
"@avantf/mem": "0.6.
|
|
82
|
-
"@avantf/mem-contract": "0.6.
|
|
83
|
-
"@avantf/mem-convert": "0.6.
|
|
84
|
-
"@avantf/mem-provision": "0.6.
|
|
81
|
+
"@avantf/mem": "0.6.3",
|
|
82
|
+
"@avantf/mem-contract": "0.6.3",
|
|
83
|
+
"@avantf/mem-convert": "0.6.3",
|
|
84
|
+
"@avantf/mem-provision": "0.6.3",
|
|
85
85
|
"@types/node": "^22.0.0",
|
|
86
86
|
"@types/react": "^18.3.0",
|
|
87
87
|
"lightningcss": "^1.32.0",
|