dsh-layered-memory 0.9.2 → 0.11.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/dist/index.d.ts CHANGED
@@ -8,495 +8,5 @@ export declare const inject: string[];
8
8
  * (Standard Schema 接口)做校验与默认值填充;导出 `schema` 会被静默忽略,
9
9
  * 导致 config 里嵌套对象为 undefined、apply 抛错、fiber FAILED 拖垮宿主启动。
10
10
  */
11
- export declare const Config: import("@deepseek-ai/schemastery").default<Schemastery.ObjectS<{
12
- dataDir: import("@deepseek-ai/schemastery").default<string, string>;
13
- family: import("@deepseek-ai/schemastery").default<"chat" | "work" | "auto", "chat" | "work" | "auto">;
14
- capture: import("@deepseek-ai/schemastery").default<Schemastery.ObjectS<{
15
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
16
- stripCodeBlocks: import("@deepseek-ai/schemastery").default<boolean, boolean>;
17
- maxMessageChars: import("@deepseek-ai/schemastery").default<number, number>;
18
- }>, Schemastery.ObjectT<{
19
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
20
- stripCodeBlocks: import("@deepseek-ai/schemastery").default<boolean, boolean>;
21
- maxMessageChars: import("@deepseek-ai/schemastery").default<number, number>;
22
- }>>;
23
- extract: import("@deepseek-ai/schemastery").default<Schemastery.ObjectS<{
24
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
25
- minMessages: import("@deepseek-ai/schemastery").default<number, number>;
26
- idleSeconds: import("@deepseek-ai/schemastery").default<number, number>;
27
- backgroundMessages: import("@deepseek-ai/schemastery").default<number, number>;
28
- candidatePool: import("@deepseek-ai/schemastery").default<number, number>;
29
- }>, Schemastery.ObjectT<{
30
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
31
- minMessages: import("@deepseek-ai/schemastery").default<number, number>;
32
- idleSeconds: import("@deepseek-ai/schemastery").default<number, number>;
33
- backgroundMessages: import("@deepseek-ai/schemastery").default<number, number>;
34
- candidatePool: import("@deepseek-ai/schemastery").default<number, number>;
35
- }>>;
36
- l2: import("@deepseek-ai/schemastery").default<Schemastery.ObjectS<{
37
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
38
- minNewMemories: import("@deepseek-ai/schemastery").default<number, number>;
39
- maxScenes: import("@deepseek-ai/schemastery").default<number, number>;
40
- sceneContextLimit: import("@deepseek-ai/schemastery").default<number, number>;
41
- }>, Schemastery.ObjectT<{
42
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
43
- minNewMemories: import("@deepseek-ai/schemastery").default<number, number>;
44
- maxScenes: import("@deepseek-ai/schemastery").default<number, number>;
45
- sceneContextLimit: import("@deepseek-ai/schemastery").default<number, number>;
46
- }>>;
47
- l3: import("@deepseek-ai/schemastery").default<Schemastery.ObjectS<{
48
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
49
- interval: import("@deepseek-ai/schemastery").default<number, number>;
50
- }>, Schemastery.ObjectT<{
51
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
52
- interval: import("@deepseek-ai/schemastery").default<number, number>;
53
- }>>;
54
- recall: import("@deepseek-ai/schemastery").default<Schemastery.ObjectS<{
55
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
56
- maxResults: import("@deepseek-ai/schemastery").default<number, number>;
57
- maxCharsPerMemory: import("@deepseek-ai/schemastery").default<number, number>;
58
- maxTotalRecallChars: import("@deepseek-ai/schemastery").default<number, number>;
59
- timeoutMs: import("@deepseek-ai/schemastery").default<number, number>;
60
- includePersona: import("@deepseek-ai/schemastery").default<boolean, boolean>;
61
- includeSceneNav: import("@deepseek-ai/schemastery").default<boolean, boolean>;
62
- strategy: import("@deepseek-ai/schemastery").default<"hybrid" | "keyword" | "embedding", "hybrid" | "keyword" | "embedding">;
63
- scoreThreshold: import("@deepseek-ai/schemastery").default<number, number>;
64
- decayHalfLifeDays: import("@deepseek-ai/schemastery").default<number, number>;
65
- }>, Schemastery.ObjectT<{
66
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
67
- maxResults: import("@deepseek-ai/schemastery").default<number, number>;
68
- maxCharsPerMemory: import("@deepseek-ai/schemastery").default<number, number>;
69
- maxTotalRecallChars: import("@deepseek-ai/schemastery").default<number, number>;
70
- timeoutMs: import("@deepseek-ai/schemastery").default<number, number>;
71
- includePersona: import("@deepseek-ai/schemastery").default<boolean, boolean>;
72
- includeSceneNav: import("@deepseek-ai/schemastery").default<boolean, boolean>;
73
- strategy: import("@deepseek-ai/schemastery").default<"hybrid" | "keyword" | "embedding", "hybrid" | "keyword" | "embedding">;
74
- scoreThreshold: import("@deepseek-ai/schemastery").default<number, number>;
75
- decayHalfLifeDays: import("@deepseek-ai/schemastery").default<number, number>;
76
- }>>;
77
- embedding: import("@deepseek-ai/schemastery").default<Schemastery.ObjectS<{
78
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
79
- baseUrl: import("@deepseek-ai/schemastery").default<string, string>;
80
- apiKey: import("@deepseek-ai/schemastery").default<string, string>;
81
- model: import("@deepseek-ai/schemastery").default<string, string>;
82
- dimensions: import("@deepseek-ai/schemastery").default<number, number>;
83
- maxInputChars: import("@deepseek-ai/schemastery").default<number, number>;
84
- timeoutMs: import("@deepseek-ai/schemastery").default<number, number>;
85
- allowLocalModels: import("@deepseek-ai/schemastery").default<boolean, boolean>;
86
- mirror: import("@deepseek-ai/schemastery").default<string, string>;
87
- proxy: import("@deepseek-ai/schemastery").default<string, string>;
88
- }>, Schemastery.ObjectT<{
89
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
90
- baseUrl: import("@deepseek-ai/schemastery").default<string, string>;
91
- apiKey: import("@deepseek-ai/schemastery").default<string, string>;
92
- model: import("@deepseek-ai/schemastery").default<string, string>;
93
- dimensions: import("@deepseek-ai/schemastery").default<number, number>;
94
- maxInputChars: import("@deepseek-ai/schemastery").default<number, number>;
95
- timeoutMs: import("@deepseek-ai/schemastery").default<number, number>;
96
- allowLocalModels: import("@deepseek-ai/schemastery").default<boolean, boolean>;
97
- mirror: import("@deepseek-ai/schemastery").default<string, string>;
98
- proxy: import("@deepseek-ai/schemastery").default<string, string>;
99
- }>>;
100
- llm: import("@deepseek-ai/schemastery").default<Schemastery.ObjectS<{
101
- provider: import("@deepseek-ai/schemastery").default<string, string>;
102
- model: import("@deepseek-ai/schemastery").default<string, string>;
103
- fallbacks: import("@deepseek-ai/schemastery").default<({
104
- provider?: string | null | undefined;
105
- model?: string | null | undefined;
106
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
107
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
108
- provider: import("@deepseek-ai/schemastery").default<string, string>;
109
- model: import("@deepseek-ai/schemastery").default<string, string>;
110
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
111
- }>[]>;
112
- layerRoutes: import("@deepseek-ai/schemastery").default<Schemastery.ObjectS<{
113
- l1: import("@deepseek-ai/schemastery").default<({
114
- provider?: string | null | undefined;
115
- model?: string | null | undefined;
116
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
117
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
118
- provider: import("@deepseek-ai/schemastery").default<string, string>;
119
- model: import("@deepseek-ai/schemastery").default<string, string>;
120
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
121
- }>[]>;
122
- l2: import("@deepseek-ai/schemastery").default<({
123
- provider?: string | null | undefined;
124
- model?: string | null | undefined;
125
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
126
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
127
- provider: import("@deepseek-ai/schemastery").default<string, string>;
128
- model: import("@deepseek-ai/schemastery").default<string, string>;
129
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
130
- }>[]>;
131
- l3: import("@deepseek-ai/schemastery").default<({
132
- provider?: string | null | undefined;
133
- model?: string | null | undefined;
134
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
135
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
136
- provider: import("@deepseek-ai/schemastery").default<string, string>;
137
- model: import("@deepseek-ai/schemastery").default<string, string>;
138
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
139
- }>[]>;
140
- }>, Schemastery.ObjectT<{
141
- l1: import("@deepseek-ai/schemastery").default<({
142
- provider?: string | null | undefined;
143
- model?: string | null | undefined;
144
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
145
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
146
- provider: import("@deepseek-ai/schemastery").default<string, string>;
147
- model: import("@deepseek-ai/schemastery").default<string, string>;
148
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
149
- }>[]>;
150
- l2: import("@deepseek-ai/schemastery").default<({
151
- provider?: string | null | undefined;
152
- model?: string | null | undefined;
153
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
154
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
155
- provider: import("@deepseek-ai/schemastery").default<string, string>;
156
- model: import("@deepseek-ai/schemastery").default<string, string>;
157
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
158
- }>[]>;
159
- l3: import("@deepseek-ai/schemastery").default<({
160
- provider?: string | null | undefined;
161
- model?: string | null | undefined;
162
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
163
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
164
- provider: import("@deepseek-ai/schemastery").default<string, string>;
165
- model: import("@deepseek-ai/schemastery").default<string, string>;
166
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
167
- }>[]>;
168
- }>>;
169
- maxTokens: import("@deepseek-ai/schemastery").default<number, number>;
170
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
171
- temperature: import("@deepseek-ai/schemastery").default<number, number>;
172
- maxInputChars: import("@deepseek-ai/schemastery").default<number, number>;
173
- timeoutMs: import("@deepseek-ai/schemastery").default<number, number>;
174
- }>, Schemastery.ObjectT<{
175
- provider: import("@deepseek-ai/schemastery").default<string, string>;
176
- model: import("@deepseek-ai/schemastery").default<string, string>;
177
- fallbacks: import("@deepseek-ai/schemastery").default<({
178
- provider?: string | null | undefined;
179
- model?: string | null | undefined;
180
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
181
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
182
- provider: import("@deepseek-ai/schemastery").default<string, string>;
183
- model: import("@deepseek-ai/schemastery").default<string, string>;
184
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
185
- }>[]>;
186
- layerRoutes: import("@deepseek-ai/schemastery").default<Schemastery.ObjectS<{
187
- l1: import("@deepseek-ai/schemastery").default<({
188
- provider?: string | null | undefined;
189
- model?: string | null | undefined;
190
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
191
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
192
- provider: import("@deepseek-ai/schemastery").default<string, string>;
193
- model: import("@deepseek-ai/schemastery").default<string, string>;
194
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
195
- }>[]>;
196
- l2: import("@deepseek-ai/schemastery").default<({
197
- provider?: string | null | undefined;
198
- model?: string | null | undefined;
199
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
200
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
201
- provider: import("@deepseek-ai/schemastery").default<string, string>;
202
- model: import("@deepseek-ai/schemastery").default<string, string>;
203
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
204
- }>[]>;
205
- l3: import("@deepseek-ai/schemastery").default<({
206
- provider?: string | null | undefined;
207
- model?: string | null | undefined;
208
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
209
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
210
- provider: import("@deepseek-ai/schemastery").default<string, string>;
211
- model: import("@deepseek-ai/schemastery").default<string, string>;
212
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
213
- }>[]>;
214
- }>, Schemastery.ObjectT<{
215
- l1: import("@deepseek-ai/schemastery").default<({
216
- provider?: string | null | undefined;
217
- model?: string | null | undefined;
218
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
219
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
220
- provider: import("@deepseek-ai/schemastery").default<string, string>;
221
- model: import("@deepseek-ai/schemastery").default<string, string>;
222
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
223
- }>[]>;
224
- l2: import("@deepseek-ai/schemastery").default<({
225
- provider?: string | null | undefined;
226
- model?: string | null | undefined;
227
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
228
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
229
- provider: import("@deepseek-ai/schemastery").default<string, string>;
230
- model: import("@deepseek-ai/schemastery").default<string, string>;
231
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
232
- }>[]>;
233
- l3: import("@deepseek-ai/schemastery").default<({
234
- provider?: string | null | undefined;
235
- model?: string | null | undefined;
236
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
237
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
238
- provider: import("@deepseek-ai/schemastery").default<string, string>;
239
- model: import("@deepseek-ai/schemastery").default<string, string>;
240
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
241
- }>[]>;
242
- }>>;
243
- maxTokens: import("@deepseek-ai/schemastery").default<number, number>;
244
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
245
- temperature: import("@deepseek-ai/schemastery").default<number, number>;
246
- maxInputChars: import("@deepseek-ai/schemastery").default<number, number>;
247
- timeoutMs: import("@deepseek-ai/schemastery").default<number, number>;
248
- }>>;
249
- tokenCost: import("@deepseek-ai/schemastery").default<Schemastery.ObjectS<{
250
- retentionDays: import("@deepseek-ai/schemastery").default<number, number>;
251
- }>, Schemastery.ObjectT<{
252
- retentionDays: import("@deepseek-ai/schemastery").default<number, number>;
253
- }>>;
254
- tools: import("@deepseek-ai/schemastery").default<boolean, boolean>;
255
- benchControl: import("@deepseek-ai/schemastery").default<boolean, boolean>;
256
- }>, Schemastery.ObjectT<{
257
- dataDir: import("@deepseek-ai/schemastery").default<string, string>;
258
- family: import("@deepseek-ai/schemastery").default<"chat" | "work" | "auto", "chat" | "work" | "auto">;
259
- capture: import("@deepseek-ai/schemastery").default<Schemastery.ObjectS<{
260
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
261
- stripCodeBlocks: import("@deepseek-ai/schemastery").default<boolean, boolean>;
262
- maxMessageChars: import("@deepseek-ai/schemastery").default<number, number>;
263
- }>, Schemastery.ObjectT<{
264
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
265
- stripCodeBlocks: import("@deepseek-ai/schemastery").default<boolean, boolean>;
266
- maxMessageChars: import("@deepseek-ai/schemastery").default<number, number>;
267
- }>>;
268
- extract: import("@deepseek-ai/schemastery").default<Schemastery.ObjectS<{
269
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
270
- minMessages: import("@deepseek-ai/schemastery").default<number, number>;
271
- idleSeconds: import("@deepseek-ai/schemastery").default<number, number>;
272
- backgroundMessages: import("@deepseek-ai/schemastery").default<number, number>;
273
- candidatePool: import("@deepseek-ai/schemastery").default<number, number>;
274
- }>, Schemastery.ObjectT<{
275
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
276
- minMessages: import("@deepseek-ai/schemastery").default<number, number>;
277
- idleSeconds: import("@deepseek-ai/schemastery").default<number, number>;
278
- backgroundMessages: import("@deepseek-ai/schemastery").default<number, number>;
279
- candidatePool: import("@deepseek-ai/schemastery").default<number, number>;
280
- }>>;
281
- l2: import("@deepseek-ai/schemastery").default<Schemastery.ObjectS<{
282
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
283
- minNewMemories: import("@deepseek-ai/schemastery").default<number, number>;
284
- maxScenes: import("@deepseek-ai/schemastery").default<number, number>;
285
- sceneContextLimit: import("@deepseek-ai/schemastery").default<number, number>;
286
- }>, Schemastery.ObjectT<{
287
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
288
- minNewMemories: import("@deepseek-ai/schemastery").default<number, number>;
289
- maxScenes: import("@deepseek-ai/schemastery").default<number, number>;
290
- sceneContextLimit: import("@deepseek-ai/schemastery").default<number, number>;
291
- }>>;
292
- l3: import("@deepseek-ai/schemastery").default<Schemastery.ObjectS<{
293
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
294
- interval: import("@deepseek-ai/schemastery").default<number, number>;
295
- }>, Schemastery.ObjectT<{
296
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
297
- interval: import("@deepseek-ai/schemastery").default<number, number>;
298
- }>>;
299
- recall: import("@deepseek-ai/schemastery").default<Schemastery.ObjectS<{
300
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
301
- maxResults: import("@deepseek-ai/schemastery").default<number, number>;
302
- maxCharsPerMemory: import("@deepseek-ai/schemastery").default<number, number>;
303
- maxTotalRecallChars: import("@deepseek-ai/schemastery").default<number, number>;
304
- timeoutMs: import("@deepseek-ai/schemastery").default<number, number>;
305
- includePersona: import("@deepseek-ai/schemastery").default<boolean, boolean>;
306
- includeSceneNav: import("@deepseek-ai/schemastery").default<boolean, boolean>;
307
- strategy: import("@deepseek-ai/schemastery").default<"hybrid" | "keyword" | "embedding", "hybrid" | "keyword" | "embedding">;
308
- scoreThreshold: import("@deepseek-ai/schemastery").default<number, number>;
309
- decayHalfLifeDays: import("@deepseek-ai/schemastery").default<number, number>;
310
- }>, Schemastery.ObjectT<{
311
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
312
- maxResults: import("@deepseek-ai/schemastery").default<number, number>;
313
- maxCharsPerMemory: import("@deepseek-ai/schemastery").default<number, number>;
314
- maxTotalRecallChars: import("@deepseek-ai/schemastery").default<number, number>;
315
- timeoutMs: import("@deepseek-ai/schemastery").default<number, number>;
316
- includePersona: import("@deepseek-ai/schemastery").default<boolean, boolean>;
317
- includeSceneNav: import("@deepseek-ai/schemastery").default<boolean, boolean>;
318
- strategy: import("@deepseek-ai/schemastery").default<"hybrid" | "keyword" | "embedding", "hybrid" | "keyword" | "embedding">;
319
- scoreThreshold: import("@deepseek-ai/schemastery").default<number, number>;
320
- decayHalfLifeDays: import("@deepseek-ai/schemastery").default<number, number>;
321
- }>>;
322
- embedding: import("@deepseek-ai/schemastery").default<Schemastery.ObjectS<{
323
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
324
- baseUrl: import("@deepseek-ai/schemastery").default<string, string>;
325
- apiKey: import("@deepseek-ai/schemastery").default<string, string>;
326
- model: import("@deepseek-ai/schemastery").default<string, string>;
327
- dimensions: import("@deepseek-ai/schemastery").default<number, number>;
328
- maxInputChars: import("@deepseek-ai/schemastery").default<number, number>;
329
- timeoutMs: import("@deepseek-ai/schemastery").default<number, number>;
330
- allowLocalModels: import("@deepseek-ai/schemastery").default<boolean, boolean>;
331
- mirror: import("@deepseek-ai/schemastery").default<string, string>;
332
- proxy: import("@deepseek-ai/schemastery").default<string, string>;
333
- }>, Schemastery.ObjectT<{
334
- enabled: import("@deepseek-ai/schemastery").default<boolean, boolean>;
335
- baseUrl: import("@deepseek-ai/schemastery").default<string, string>;
336
- apiKey: import("@deepseek-ai/schemastery").default<string, string>;
337
- model: import("@deepseek-ai/schemastery").default<string, string>;
338
- dimensions: import("@deepseek-ai/schemastery").default<number, number>;
339
- maxInputChars: import("@deepseek-ai/schemastery").default<number, number>;
340
- timeoutMs: import("@deepseek-ai/schemastery").default<number, number>;
341
- allowLocalModels: import("@deepseek-ai/schemastery").default<boolean, boolean>;
342
- mirror: import("@deepseek-ai/schemastery").default<string, string>;
343
- proxy: import("@deepseek-ai/schemastery").default<string, string>;
344
- }>>;
345
- llm: import("@deepseek-ai/schemastery").default<Schemastery.ObjectS<{
346
- provider: import("@deepseek-ai/schemastery").default<string, string>;
347
- model: import("@deepseek-ai/schemastery").default<string, string>;
348
- fallbacks: import("@deepseek-ai/schemastery").default<({
349
- provider?: string | null | undefined;
350
- model?: string | null | undefined;
351
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
352
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
353
- provider: import("@deepseek-ai/schemastery").default<string, string>;
354
- model: import("@deepseek-ai/schemastery").default<string, string>;
355
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
356
- }>[]>;
357
- layerRoutes: import("@deepseek-ai/schemastery").default<Schemastery.ObjectS<{
358
- l1: import("@deepseek-ai/schemastery").default<({
359
- provider?: string | null | undefined;
360
- model?: string | null | undefined;
361
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
362
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
363
- provider: import("@deepseek-ai/schemastery").default<string, string>;
364
- model: import("@deepseek-ai/schemastery").default<string, string>;
365
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
366
- }>[]>;
367
- l2: import("@deepseek-ai/schemastery").default<({
368
- provider?: string | null | undefined;
369
- model?: string | null | undefined;
370
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
371
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
372
- provider: import("@deepseek-ai/schemastery").default<string, string>;
373
- model: import("@deepseek-ai/schemastery").default<string, string>;
374
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
375
- }>[]>;
376
- l3: import("@deepseek-ai/schemastery").default<({
377
- provider?: string | null | undefined;
378
- model?: string | null | undefined;
379
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
380
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
381
- provider: import("@deepseek-ai/schemastery").default<string, string>;
382
- model: import("@deepseek-ai/schemastery").default<string, string>;
383
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
384
- }>[]>;
385
- }>, Schemastery.ObjectT<{
386
- l1: import("@deepseek-ai/schemastery").default<({
387
- provider?: string | null | undefined;
388
- model?: string | null | undefined;
389
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
390
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
391
- provider: import("@deepseek-ai/schemastery").default<string, string>;
392
- model: import("@deepseek-ai/schemastery").default<string, string>;
393
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
394
- }>[]>;
395
- l2: import("@deepseek-ai/schemastery").default<({
396
- provider?: string | null | undefined;
397
- model?: string | null | undefined;
398
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
399
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
400
- provider: import("@deepseek-ai/schemastery").default<string, string>;
401
- model: import("@deepseek-ai/schemastery").default<string, string>;
402
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
403
- }>[]>;
404
- l3: import("@deepseek-ai/schemastery").default<({
405
- provider?: string | null | undefined;
406
- model?: string | null | undefined;
407
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
408
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
409
- provider: import("@deepseek-ai/schemastery").default<string, string>;
410
- model: import("@deepseek-ai/schemastery").default<string, string>;
411
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
412
- }>[]>;
413
- }>>;
414
- maxTokens: import("@deepseek-ai/schemastery").default<number, number>;
415
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
416
- temperature: import("@deepseek-ai/schemastery").default<number, number>;
417
- maxInputChars: import("@deepseek-ai/schemastery").default<number, number>;
418
- timeoutMs: import("@deepseek-ai/schemastery").default<number, number>;
419
- }>, Schemastery.ObjectT<{
420
- provider: import("@deepseek-ai/schemastery").default<string, string>;
421
- model: import("@deepseek-ai/schemastery").default<string, string>;
422
- fallbacks: import("@deepseek-ai/schemastery").default<({
423
- provider?: string | null | undefined;
424
- model?: string | null | undefined;
425
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
426
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
427
- provider: import("@deepseek-ai/schemastery").default<string, string>;
428
- model: import("@deepseek-ai/schemastery").default<string, string>;
429
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
430
- }>[]>;
431
- layerRoutes: import("@deepseek-ai/schemastery").default<Schemastery.ObjectS<{
432
- l1: import("@deepseek-ai/schemastery").default<({
433
- provider?: string | null | undefined;
434
- model?: string | null | undefined;
435
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
436
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
437
- provider: import("@deepseek-ai/schemastery").default<string, string>;
438
- model: import("@deepseek-ai/schemastery").default<string, string>;
439
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
440
- }>[]>;
441
- l2: import("@deepseek-ai/schemastery").default<({
442
- provider?: string | null | undefined;
443
- model?: string | null | undefined;
444
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
445
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
446
- provider: import("@deepseek-ai/schemastery").default<string, string>;
447
- model: import("@deepseek-ai/schemastery").default<string, string>;
448
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
449
- }>[]>;
450
- l3: import("@deepseek-ai/schemastery").default<({
451
- provider?: string | null | undefined;
452
- model?: string | null | undefined;
453
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
454
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
455
- provider: import("@deepseek-ai/schemastery").default<string, string>;
456
- model: import("@deepseek-ai/schemastery").default<string, string>;
457
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
458
- }>[]>;
459
- }>, Schemastery.ObjectT<{
460
- l1: import("@deepseek-ai/schemastery").default<({
461
- provider?: string | null | undefined;
462
- model?: string | null | undefined;
463
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
464
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
465
- provider: import("@deepseek-ai/schemastery").default<string, string>;
466
- model: import("@deepseek-ai/schemastery").default<string, string>;
467
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
468
- }>[]>;
469
- l2: import("@deepseek-ai/schemastery").default<({
470
- provider?: string | null | undefined;
471
- model?: string | null | undefined;
472
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
473
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
474
- provider: import("@deepseek-ai/schemastery").default<string, string>;
475
- model: import("@deepseek-ai/schemastery").default<string, string>;
476
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
477
- }>[]>;
478
- l3: import("@deepseek-ai/schemastery").default<({
479
- provider?: string | null | undefined;
480
- model?: string | null | undefined;
481
- reasoningEffort?: "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
482
- } & import("@deepseek-ai/cosmokit").Dict)[], Schemastery.ObjectT<{
483
- provider: import("@deepseek-ai/schemastery").default<string, string>;
484
- model: import("@deepseek-ai/schemastery").default<string, string>;
485
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
486
- }>[]>;
487
- }>>;
488
- maxTokens: import("@deepseek-ai/schemastery").default<number, number>;
489
- reasoningEffort: import("@deepseek-ai/schemastery").default<"" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "" | "off" | "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max">;
490
- temperature: import("@deepseek-ai/schemastery").default<number, number>;
491
- maxInputChars: import("@deepseek-ai/schemastery").default<number, number>;
492
- timeoutMs: import("@deepseek-ai/schemastery").default<number, number>;
493
- }>>;
494
- tokenCost: import("@deepseek-ai/schemastery").default<Schemastery.ObjectS<{
495
- retentionDays: import("@deepseek-ai/schemastery").default<number, number>;
496
- }>, Schemastery.ObjectT<{
497
- retentionDays: import("@deepseek-ai/schemastery").default<number, number>;
498
- }>>;
499
- tools: import("@deepseek-ai/schemastery").default<boolean, boolean>;
500
- benchControl: import("@deepseek-ai/schemastery").default<boolean, boolean>;
501
- }>>;
11
+ export declare const Config: import("@deepseek-ai/schemastery").default<any, MemoryConfig>;
502
12
  export declare function apply(ctx: Context, config: MemoryConfig): Promise<void>;
package/dist/index.js CHANGED
@@ -38,6 +38,7 @@ import { SceneStore } from './store/scenes.js';
38
38
  import { SessionModeStore } from './store/session-modes.js';
39
39
  import { StateStore } from './store/state.js';
40
40
  import { registerMemoryTools } from './tools/index.js';
41
+ import { registerTuiSurface } from './tui.js';
41
42
  import { errDetail, withFileLog } from './util/filelog.js';
42
43
  import { buildRouteChain, resolveModelRoute, invalidateEffortCache } from './llm.js';
43
44
  import { effectiveCfg } from './pipeline/runner.js';
@@ -287,6 +288,9 @@ export async function apply(ctx, config) {
287
288
  await runner.init();
288
289
  // 档位切换同步(ADR-0003):切走按捕获档位落袋 / 切 off 挂起 / 切回清挂起
289
290
  modes.setModeChangeHandler((sessionId, oldMode, newMode) => runner.onModeChange(sessionId, oldMode, newMode));
291
+ // ── TUI 形态原生接入(dsh-tui/官方 TUI 宿主;软探测,web/headless 下全部 no-op)。
292
+ // 放切换链接线之后:/memory 在启动窗口内派发也不会绕过 runner.onModeChange ──
293
+ registerTuiSurface(ctx, { logger, live, modes });
290
294
  // 闲置兜底:静默达标会话的未蒸馏切片自动落袋(idleSeconds=0 关闭)
291
295
  runner.startIdleTimer();
292
296
  // 重建控制器(存储降级时不建——RPC 端点走 supported=false 分支)
@@ -37,6 +37,8 @@ export interface LiveSettingsHandle {
37
37
  get(): MemoryLiveSettings;
38
38
  /** UI 写入入口;不支持时抛错由 RPC 层转成业务错误 */
39
39
  update(patch: Partial<MemoryLiveSettings>): Promise<void>;
40
+ /** 订阅开关变更(TUI 状态行等即时刷新;可选——缺省方退化为下次交互时刷新)。返回退订。 */
41
+ onChange?(cb: () => void): () => void;
40
42
  }
41
43
  export declare function liveSettingsSchema(): Schema<MemoryLiveSettings>;
42
44
  export declare function registerLiveSettings(ctx: Context, logger: MemoryLogger): LiveSettingsHandle;
package/dist/settings.js CHANGED
@@ -134,6 +134,9 @@ export function registerLiveSettings(ctx, logger) {
134
134
  get: () => ALWAYS_ON,
135
135
  update: () => Promise.reject(new Error('settings 服务不可用')),
136
136
  };
137
+ // 变更订阅者(handle.onChange):挂接在闭包层,inner 换新(服务迁移)后由新 scope 的
138
+ // watch 继续驱动——订阅方无感
139
+ const changeCbs = new Set();
137
140
  /** 挂接一个(新注册或复用的)scope:重挂前先摘旧 watcher,防跨重启累积。 */
138
141
  const wireScope = (scope) => {
139
142
  cachedUnwatch?.();
@@ -141,6 +144,14 @@ export function registerLiveSettings(ctx, logger) {
141
144
  cachedUnwatch = scope.watch((next) => {
142
145
  const prev = current;
143
146
  current = resolveSettings(next);
147
+ for (const cb of changeCbs) {
148
+ try {
149
+ cb();
150
+ }
151
+ catch {
152
+ // 订阅方异常不阻断开关链(与档位切换回调同纪律)
153
+ }
154
+ }
144
155
  const b = current.distillBudgets;
145
156
  const budgetNote = (b.extract || b.dedup || b.l2 || b.l3)
146
157
  ? `,输出预算=抽取 ${b.extract || '默认'}/去重 ${b.dedup || '默认'}/L2 ${b.l2 || '默认'}/L3 ${b.l3 || '默认'}`
@@ -226,6 +237,12 @@ export function registerLiveSettings(ctx, logger) {
226
237
  },
227
238
  get: () => inner.get(),
228
239
  update: (patch) => inner.update(patch),
240
+ onChange: (cb) => {
241
+ changeCbs.add(cb);
242
+ return () => {
243
+ changeCbs.delete(cb);
244
+ };
245
+ },
229
246
  };
230
247
  }
231
248
  /** scope.get() 的防御性解析:异常值回退全开(宁可多记不可静默停摆)。 */
package/dist/tui.d.ts ADDED
@@ -0,0 +1,22 @@
1
+ /**
2
+ * TUI 形态原生接入(dsh-tui / 官方 TUI 宿主)——软探测、静默降级,绝不拖垮宿主。
3
+ *
4
+ * 接缝出处:dsh-ecosystem-spec《终端交互生态插件准入与开发指南》(dsh-TUI 生态)。
5
+ * web/headless profile 缺这些服务时全部 no-op;服务形状走内联结构类型,不引
6
+ * 第三方包依赖(与 sessions/connection 的鸭子探测同款纪律——tsc 抓不到运行时
7
+ * 漂移,升级 dsh-tui 后须真机复验)。
8
+ * - tuiSettingsSections:/settings 声明式设置区块(settings 命名空间 dsh-memory 的编辑面);
9
+ * - tuiStatus:提示框上方键控状态行(当前会话记忆档位;清理是调用者责任,挂 ctx.effect);
10
+ * - tuiDialogs:托管单选弹窗(/memory 无参数时的档位选择);
11
+ * - commands(dsh-base 服务,全形态存在):/memory 命令——TUI/web 均可派发,headless 无 UI 自然闲置。
12
+ */
13
+ import type { Context } from '@deepseek-ai/cordis';
14
+ import type { LiveSettingsHandle } from './settings.js';
15
+ import type { SessionModeStore } from './store/session-modes.js';
16
+ import type { MemoryLogger } from './types.js';
17
+ export interface TuiSurfaceDeps {
18
+ logger: MemoryLogger;
19
+ live: LiveSettingsHandle;
20
+ modes: SessionModeStore;
21
+ }
22
+ export declare function registerTuiSurface(ctx: Context, deps: TuiSurfaceDeps): void;