dsh-hypatia-auto-memory 2.1.0 → 2.2.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 +4 -1
- package/README.zh-CN.md +2 -0
- package/icon.svg +17 -0
- package/lib/client.js +523 -519
- package/lib/client.js.map +1 -1
- package/locale/en.json +6 -0
- package/locale/zh.json +6 -0
- package/package.json +9 -5
- package/src/client/SettingsCard.module.css +106 -88
- package/src/client/SettingsCard.tsx +450 -442
- package/src/client/index.tsx +8 -4
- package/src/client/locales.ts +4 -2
package/locale/en.json
ADDED
package/locale/zh.json
ADDED
package/package.json
CHANGED
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-hypatia-auto-memory",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "Event-driven Hypatia memory for DSH: automatic conversation logging via session events, queued background consolidation (span summaries + work-unit extraction) with a dedicated model route, and recall injection — zero per-call model work in the main session.",
|
|
5
|
+
"icon": "./icon.svg",
|
|
5
6
|
"type": "module",
|
|
6
7
|
"main": "src/index.js",
|
|
7
8
|
"exports": {
|
|
8
9
|
".": "./src/index.js",
|
|
9
10
|
"./client": "./lib/client.js",
|
|
10
|
-
"./package.json": "./package.json"
|
|
11
|
+
"./package.json": "./package.json",
|
|
12
|
+
"./locale/*.json": "./locale/*.json"
|
|
11
13
|
},
|
|
12
14
|
"files": [
|
|
15
|
+
"icon.svg",
|
|
13
16
|
"src",
|
|
14
17
|
"lib",
|
|
15
18
|
"skills",
|
|
19
|
+
"locale/*.json",
|
|
16
20
|
"cordis.patch.yml",
|
|
17
21
|
"README.md"
|
|
18
22
|
],
|
|
@@ -51,9 +55,9 @@
|
|
|
51
55
|
"peerDependencies": {
|
|
52
56
|
"@deepseek-ai/cordis": "^4.0.2",
|
|
53
57
|
"@deepseek-ai/dsh": ">=0.1.7-rc.1",
|
|
54
|
-
"@deepseek-ai/dsh-llm": "^0.1.7-rc.1",
|
|
55
|
-
"@deepseek-ai/dsh-storage-domain": "^0.1.7-rc.1",
|
|
56
|
-
"@deepseek-ai/dsh-tools": "^0.1.7-rc.1",
|
|
58
|
+
"@deepseek-ai/dsh-llm": "^0.1.7-rc.1 || ^0.2.0-rc.1",
|
|
59
|
+
"@deepseek-ai/dsh-storage-domain": "^0.1.7-rc.1 || ^0.2.0-rc.1",
|
|
60
|
+
"@deepseek-ai/dsh-tools": "^0.1.7-rc.1 || ^0.2.0-rc.1",
|
|
57
61
|
"react": "^18.2.0"
|
|
58
62
|
},
|
|
59
63
|
"peerDependenciesMeta": {
|
|
@@ -1,22 +1,75 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Bundle-local
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Bundle-local wrapper around the shared settings form: the disclosure that
|
|
3
|
+
* holds the form plus the fields this plugin draws itself. The form frame,
|
|
4
|
+
* its fields, its save and its read-only notice are the harness's own
|
|
5
|
+
* (`SettingsForm`, `SettingsValueField`, `Switch`), so this file carries only
|
|
6
|
+
* what is specific to this card: the disclosure header, the fieldset the model
|
|
7
|
+
* priority editor needs, and the spacing between them.
|
|
5
8
|
*/
|
|
6
9
|
|
|
7
10
|
.card {
|
|
8
11
|
border: 0.5px solid var(--dsw-alias-border-l4);
|
|
9
|
-
border-radius:
|
|
12
|
+
border-radius: var(--dsw-radius-lg);
|
|
10
13
|
background: var(--dsw-alias-bg-layer-2);
|
|
14
|
+
/* Anything that scrolls inside a card draws the l2 thumb
|
|
15
|
+
(ui-theme styles/scrollbar.css rebinding contract). */
|
|
16
|
+
--dsh-scrollbar-thumb: var(--dsw-alias-scrollbar-bg-l2);
|
|
17
|
+
--dsh-scrollbar-thumb-hover: var(--dsw-alias-scrollbar-hover-l2);
|
|
11
18
|
}
|
|
12
19
|
|
|
13
20
|
.header {
|
|
14
21
|
display: flex;
|
|
15
22
|
align-items: center;
|
|
16
23
|
gap: 12px;
|
|
17
|
-
padding:
|
|
24
|
+
padding: 12px 16px;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* The card's whole header is the disclosure control; the state pill beside it
|
|
28
|
+
is not part of the hit area. */
|
|
29
|
+
.toggle {
|
|
30
|
+
display: flex;
|
|
31
|
+
flex: 1;
|
|
32
|
+
min-width: 0;
|
|
33
|
+
align-items: center;
|
|
34
|
+
gap: 8px;
|
|
35
|
+
border: 0;
|
|
36
|
+
padding: 0;
|
|
37
|
+
background: transparent;
|
|
38
|
+
color: inherit;
|
|
39
|
+
font: inherit;
|
|
40
|
+
text-align: left;
|
|
41
|
+
cursor: pointer;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.toggle:focus-visible {
|
|
45
|
+
outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));
|
|
46
|
+
outline-offset: 2px;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.toggle > .chevron {
|
|
50
|
+
transform: rotate(-90deg);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.toggle[aria-expanded='true'] > .chevron {
|
|
54
|
+
transform: none;
|
|
18
55
|
}
|
|
19
56
|
|
|
57
|
+
.chevron {
|
|
58
|
+
flex: none;
|
|
59
|
+
color: var(--dsw-alias-label-tertiary);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* The head beside the page's own title, matching the component list's heading
|
|
63
|
+
below it. */
|
|
64
|
+
.sectionName {
|
|
65
|
+
color: var(--dsw-alias-label-primary);
|
|
66
|
+
font-size: 14px;
|
|
67
|
+
font-weight: 500;
|
|
68
|
+
line-height: 20px;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/* On the Settings fallback tab the card is the plugin's whole page, so it
|
|
72
|
+
carries the plugin's own name and one-liner. */
|
|
20
73
|
.headText {
|
|
21
74
|
display: flex;
|
|
22
75
|
flex: 1;
|
|
@@ -27,9 +80,9 @@
|
|
|
27
80
|
|
|
28
81
|
.name {
|
|
29
82
|
color: var(--dsw-alias-label-primary);
|
|
30
|
-
font-size:
|
|
31
|
-
font-weight:
|
|
32
|
-
line-height:
|
|
83
|
+
font-size: 14px;
|
|
84
|
+
font-weight: 500;
|
|
85
|
+
line-height: 20px;
|
|
33
86
|
}
|
|
34
87
|
|
|
35
88
|
.description {
|
|
@@ -38,12 +91,12 @@
|
|
|
38
91
|
line-height: 1.5;
|
|
39
92
|
}
|
|
40
93
|
|
|
41
|
-
.pending
|
|
94
|
+
.pending,
|
|
95
|
+
.failedPill {
|
|
42
96
|
flex: none;
|
|
43
97
|
border-radius: 999px;
|
|
44
98
|
corner-shape: round;
|
|
45
99
|
background: var(--dsw-alias-bg-module-platform);
|
|
46
|
-
color: var(--dsw-alias-label-secondary);
|
|
47
100
|
font-size: 11px;
|
|
48
101
|
font-weight: 500;
|
|
49
102
|
line-height: 17px;
|
|
@@ -51,24 +104,36 @@
|
|
|
51
104
|
white-space: nowrap;
|
|
52
105
|
}
|
|
53
106
|
|
|
107
|
+
.pending {
|
|
108
|
+
color: var(--dsw-alias-label-secondary);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* Shown in the collapsed header so a failed save is not hidden by the fold. */
|
|
112
|
+
.failedPill {
|
|
113
|
+
color: var(--dsw-alias-state-error-primary);
|
|
114
|
+
}
|
|
115
|
+
|
|
54
116
|
.body {
|
|
55
117
|
margin: 0 16px;
|
|
56
118
|
border-top: 0.5px solid var(--dsw-alias-border-l2);
|
|
57
119
|
padding-bottom: 8px;
|
|
58
120
|
}
|
|
59
121
|
|
|
122
|
+
/* The form stays mounted while collapsed (a staged edit survives the fold), so
|
|
123
|
+
the fold is a visibility change rather than an unmount. */
|
|
124
|
+
.body[hidden] {
|
|
125
|
+
display: none;
|
|
126
|
+
}
|
|
127
|
+
|
|
60
128
|
.status,
|
|
61
|
-
.readOnly,
|
|
62
129
|
.hint,
|
|
63
|
-
.advancedHint
|
|
64
|
-
.error {
|
|
130
|
+
.advancedHint {
|
|
65
131
|
margin: 0;
|
|
66
132
|
font-size: 12px;
|
|
67
133
|
line-height: 1.5;
|
|
68
134
|
}
|
|
69
135
|
|
|
70
136
|
.status,
|
|
71
|
-
.readOnly,
|
|
72
137
|
.hint,
|
|
73
138
|
.advancedHint {
|
|
74
139
|
color: var(--dsw-alias-label-tertiary);
|
|
@@ -78,18 +143,18 @@
|
|
|
78
143
|
padding: 12px 16px;
|
|
79
144
|
}
|
|
80
145
|
|
|
81
|
-
.readOnly {
|
|
82
|
-
padding-top: 12px;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
146
|
.field {
|
|
86
147
|
display: grid;
|
|
87
148
|
gap: 6px;
|
|
88
149
|
padding: 12px 0;
|
|
89
150
|
}
|
|
90
151
|
|
|
91
|
-
|
|
92
|
-
|
|
152
|
+
/* The card draws its own separators between the blocks it stacks, the way the
|
|
153
|
+
shared field group draws them between its own children (every adjacent pair,
|
|
154
|
+
not only the ones around the group). */
|
|
155
|
+
.field + .field,
|
|
156
|
+
.field + .group,
|
|
157
|
+
.group + .field {
|
|
93
158
|
border-top: 0.5px solid var(--dsw-alias-border-l2);
|
|
94
159
|
}
|
|
95
160
|
|
|
@@ -119,11 +184,6 @@
|
|
|
119
184
|
margin-top: 4px;
|
|
120
185
|
}
|
|
121
186
|
|
|
122
|
-
.group > .field:first-of-type {
|
|
123
|
-
padding-top: 12px;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
.group > .field + .field,
|
|
127
187
|
.pairedFields {
|
|
128
188
|
border-top: 0.5px solid var(--dsw-alias-border-l2);
|
|
129
189
|
}
|
|
@@ -175,7 +235,7 @@
|
|
|
175
235
|
min-width: 0;
|
|
176
236
|
height: 32px;
|
|
177
237
|
border: 0.5px solid var(--dsw-alias-border-l3);
|
|
178
|
-
border-radius:
|
|
238
|
+
border-radius: var(--dsw-radius-sm);
|
|
179
239
|
background: transparent;
|
|
180
240
|
color: var(--dsw-alias-label-primary);
|
|
181
241
|
font: inherit;
|
|
@@ -188,13 +248,13 @@
|
|
|
188
248
|
}
|
|
189
249
|
|
|
190
250
|
.select:focus-visible {
|
|
191
|
-
outline:
|
|
192
|
-
outline-offset:
|
|
251
|
+
outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));
|
|
252
|
+
outline-offset: 1px;
|
|
193
253
|
}
|
|
194
254
|
|
|
195
255
|
.warning {
|
|
196
256
|
margin: 0;
|
|
197
|
-
color: var(--dsw-alias-
|
|
257
|
+
color: var(--dsw-alias-state-error-primary);
|
|
198
258
|
font-size: 12px;
|
|
199
259
|
line-height: 1.5;
|
|
200
260
|
}
|
|
@@ -211,46 +271,6 @@
|
|
|
211
271
|
min-width: 0;
|
|
212
272
|
}
|
|
213
273
|
|
|
214
|
-
.switch {
|
|
215
|
-
box-sizing: border-box;
|
|
216
|
-
position: relative;
|
|
217
|
-
width: 36px;
|
|
218
|
-
height: 20px;
|
|
219
|
-
border: 0;
|
|
220
|
-
border-radius: 10px;
|
|
221
|
-
background: var(--dsw-alias-border-l3);
|
|
222
|
-
cursor: pointer;
|
|
223
|
-
padding: 2px;
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
.switchOn {
|
|
227
|
-
background: var(--dsw-alias-brand-primary);
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
.switch:disabled {
|
|
231
|
-
cursor: default;
|
|
232
|
-
opacity: 0.5;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
.switch:focus-visible {
|
|
236
|
-
outline: 2px solid var(--dsw-alias-brand-primary);
|
|
237
|
-
outline-offset: 2px;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
.switchThumb {
|
|
241
|
-
display: block;
|
|
242
|
-
width: 16px;
|
|
243
|
-
height: 16px;
|
|
244
|
-
border-radius: 50%;
|
|
245
|
-
corner-shape: round;
|
|
246
|
-
background: var(--dsw-alias-label-primary-foreground);
|
|
247
|
-
transition: transform 120ms ease;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
.switchOn .switchThumb {
|
|
251
|
-
transform: translateX(16px);
|
|
252
|
-
}
|
|
253
|
-
|
|
254
274
|
.modelSelection {
|
|
255
275
|
display: grid;
|
|
256
276
|
gap: 10px;
|
|
@@ -269,7 +289,7 @@
|
|
|
269
289
|
align-items: center;
|
|
270
290
|
justify-content: space-between;
|
|
271
291
|
gap: 12px;
|
|
272
|
-
color: var(--dsw-alias-
|
|
292
|
+
color: var(--dsw-alias-state-error-primary);
|
|
273
293
|
font-size: 12px;
|
|
274
294
|
line-height: 1.5;
|
|
275
295
|
}
|
|
@@ -283,6 +303,12 @@
|
|
|
283
303
|
padding: 0;
|
|
284
304
|
}
|
|
285
305
|
|
|
306
|
+
.catalogError button:focus-visible,
|
|
307
|
+
.reset:focus-visible {
|
|
308
|
+
outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));
|
|
309
|
+
outline-offset: 1px;
|
|
310
|
+
}
|
|
311
|
+
|
|
286
312
|
.models {
|
|
287
313
|
display: grid;
|
|
288
314
|
min-width: 0;
|
|
@@ -292,7 +318,7 @@
|
|
|
292
318
|
padding: 10px;
|
|
293
319
|
overflow: auto;
|
|
294
320
|
border: 0.5px solid var(--dsw-alias-border-l4);
|
|
295
|
-
border-radius:
|
|
321
|
+
border-radius: var(--dsw-radius-sm);
|
|
296
322
|
}
|
|
297
323
|
|
|
298
324
|
.models legend {
|
|
@@ -325,7 +351,7 @@
|
|
|
325
351
|
align-items: center;
|
|
326
352
|
gap: 8px;
|
|
327
353
|
min-width: 0;
|
|
328
|
-
border-radius:
|
|
354
|
+
border-radius: var(--dsw-radius-xs);
|
|
329
355
|
cursor: pointer;
|
|
330
356
|
padding: 6px;
|
|
331
357
|
}
|
|
@@ -341,7 +367,7 @@
|
|
|
341
367
|
align-items: center;
|
|
342
368
|
gap: 8px;
|
|
343
369
|
min-width: 0;
|
|
344
|
-
border-radius:
|
|
370
|
+
border-radius: var(--dsw-radius-xs);
|
|
345
371
|
padding: 6px;
|
|
346
372
|
}
|
|
347
373
|
|
|
@@ -383,8 +409,8 @@
|
|
|
383
409
|
}
|
|
384
410
|
|
|
385
411
|
.effort:focus-visible {
|
|
386
|
-
|
|
387
|
-
outline:
|
|
412
|
+
outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));
|
|
413
|
+
outline-offset: 1px;
|
|
388
414
|
}
|
|
389
415
|
|
|
390
416
|
.rowActions {
|
|
@@ -417,6 +443,11 @@
|
|
|
417
443
|
opacity: 0.4;
|
|
418
444
|
}
|
|
419
445
|
|
|
446
|
+
.move:focus-visible {
|
|
447
|
+
outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));
|
|
448
|
+
outline-offset: 1px;
|
|
449
|
+
}
|
|
450
|
+
|
|
420
451
|
.modelName,
|
|
421
452
|
.route {
|
|
422
453
|
display: block;
|
|
@@ -441,24 +472,11 @@
|
|
|
441
472
|
font-size: 11px;
|
|
442
473
|
}
|
|
443
474
|
|
|
444
|
-
.error {
|
|
445
|
-
color: var(--dsw-alias-label-error);
|
|
446
|
-
}
|
|
447
|
-
|
|
448
475
|
.advancedHint {
|
|
449
476
|
border-top: 0.5px solid var(--dsw-alias-border-l2);
|
|
450
477
|
padding-top: 12px;
|
|
451
478
|
}
|
|
452
479
|
|
|
453
|
-
.footer {
|
|
454
|
-
display: flex;
|
|
455
|
-
align-items: center;
|
|
456
|
-
justify-content: flex-end;
|
|
457
|
-
gap: 8px;
|
|
458
|
-
border-top: 0.5px solid var(--dsw-alias-border-l2);
|
|
459
|
-
padding: 12px 0 4px;
|
|
460
|
-
}
|
|
461
|
-
|
|
462
480
|
@media (max-width: 480px) {
|
|
463
481
|
.pairedFields {
|
|
464
482
|
grid-template-columns: minmax(0, 1fr);
|