dsh-prime-memory 0.26.3 → 0.26.4
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/hooks/recall.d.ts +11 -0
- package/dist/hooks/recall.js +25 -2
- package/dsh.plugin.json +1 -1
- package/package.json +1 -1
package/dist/hooks/recall.d.ts
CHANGED
|
@@ -78,6 +78,17 @@ export interface OwnInjectionFacts {
|
|
|
78
78
|
* 署名判定走 `isOwnRecallSource`,同时吃 v4 `plugin:memory` 与 v3 旧行形状。
|
|
79
79
|
*/
|
|
80
80
|
export declare function ownInjectionFromEvent(ev: InjectionEventLike): OwnInjectionFacts | undefined;
|
|
81
|
+
/**
|
|
82
|
+
* 会话事件统一读形状(issue #8):旧宿主 `session.events` 是数组属性;
|
|
83
|
+
* 0.2.x 宿主已删该属性,官方访问器是 `snapshotEvents()`(全量日志,seq 与日志
|
|
84
|
+
* 位置对齐,含 fork 前缀——与旧属性同口径)。两者都拿不到时返回 undefined,
|
|
85
|
+
* 由调用点的既有退路处置(粗标记 / 存储回填);不假设形状,不抛。
|
|
86
|
+
* 导出供双形状单测钉住。
|
|
87
|
+
*/
|
|
88
|
+
export declare function readSessionEvents(session: {
|
|
89
|
+
events?: readonly InjectionEventLike[];
|
|
90
|
+
snapshotEvents?: () => readonly InjectionEventLike[];
|
|
91
|
+
}): readonly InjectionEventLike[] | undefined;
|
|
81
92
|
export declare function buildRecallQuery(messages: Array<{
|
|
82
93
|
content: unknown;
|
|
83
94
|
}>, tailMessages?: number, maxChars?: number): string;
|
package/dist/hooks/recall.js
CHANGED
|
@@ -64,6 +64,20 @@ export function ownInjectionFromEvent(ev) {
|
|
|
64
64
|
chars,
|
|
65
65
|
};
|
|
66
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* 会话事件统一读形状(issue #8):旧宿主 `session.events` 是数组属性;
|
|
69
|
+
* 0.2.x 宿主已删该属性,官方访问器是 `snapshotEvents()`(全量日志,seq 与日志
|
|
70
|
+
* 位置对齐,含 fork 前缀——与旧属性同口径)。两者都拿不到时返回 undefined,
|
|
71
|
+
* 由调用点的既有退路处置(粗标记 / 存储回填);不假设形状,不抛。
|
|
72
|
+
* 导出供双形状单测钉住。
|
|
73
|
+
*/
|
|
74
|
+
export function readSessionEvents(session) {
|
|
75
|
+
if (Array.isArray(session.events))
|
|
76
|
+
return session.events;
|
|
77
|
+
if (typeof session.snapshotEvents === 'function')
|
|
78
|
+
return session.snapshotEvents();
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
67
81
|
export function buildRecallQuery(messages, tailMessages = RECALL_QUERY_TAIL_MESSAGES, maxChars = RECALL_QUERY_MAX_CHARS) {
|
|
68
82
|
const tail = messages.slice(-tailMessages);
|
|
69
83
|
let text = tail.map((m) => blocksToText(m.content)).join(' ').trim();
|
|
@@ -572,14 +586,18 @@ usage) {
|
|
|
572
586
|
return false;
|
|
573
587
|
try {
|
|
574
588
|
// 可选服务一律走 ctx.get() 的宽容路径(属性访问对未 inject 的服务会抛)
|
|
589
|
+
// events 形状双面:旧宿主数组属性 / 0.2.x snapshotEvents() 方法(issue #8)
|
|
575
590
|
const sessions = ctx.get?.('sessions');
|
|
576
591
|
const session = typeof sessions?.get === 'function' ? sessions.get(sessionId) : undefined;
|
|
577
592
|
if (session === undefined)
|
|
578
593
|
return false;
|
|
594
|
+
const events = readSessionEvents(session);
|
|
595
|
+
if (events === undefined)
|
|
596
|
+
return false; // 事件面不可得:调用方回退粗标记
|
|
579
597
|
const visibleSeqs = new Set(session.surface.nodes);
|
|
580
598
|
const visibleIds = new Set();
|
|
581
599
|
const knownIds = new Set();
|
|
582
|
-
for (const ev of
|
|
600
|
+
for (const ev of events) {
|
|
583
601
|
const own = ownInjectionFromEvent(ev);
|
|
584
602
|
if (own === undefined || own.id.length === 0)
|
|
585
603
|
continue;
|
|
@@ -633,12 +651,17 @@ usage) {
|
|
|
633
651
|
try {
|
|
634
652
|
// cordis 属性访问(ctx.sessions)对未 inject 的服务抛 "without inject";
|
|
635
653
|
// 可选服务一律走 ctx.get() 的宽容路径
|
|
654
|
+
// events 形状双面:旧宿主数组属性 / 0.2.x snapshotEvents() 方法(issue #8)
|
|
636
655
|
const sessions = ctx.get?.('sessions');
|
|
637
656
|
const session = typeof sessions?.get === 'function' ? sessions.get(sessionId) : undefined;
|
|
638
657
|
if (session) {
|
|
658
|
+
const events = readSessionEvents(session);
|
|
659
|
+
// 事件形状不可得:与「不在 live store」同一退路,走存储回填,不再静默归 null
|
|
660
|
+
if (events === undefined)
|
|
661
|
+
return estimateRecallFromStorage(sessionId);
|
|
639
662
|
const visible = new Set(session.surface.nodes);
|
|
640
663
|
let total = 0;
|
|
641
|
-
for (const ev of
|
|
664
|
+
for (const ev of events) {
|
|
642
665
|
const own = ownInjectionFromEvent(ev);
|
|
643
666
|
// 无 seq = 无法证明它可见,就不能算进份额(与原行为一致:原来它必须 visible.has(seq))。
|
|
644
667
|
if (own === undefined || own.chars === 0 || own.seq === undefined || !visible.has(own.seq))
|
package/dsh.plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "dsh-prime-memory",
|
|
3
3
|
"name": "dsh-prime-memory",
|
|
4
|
-
"version": "0.26.
|
|
4
|
+
"version": "0.26.4",
|
|
5
5
|
"description": {
|
|
6
6
|
"en": "Layered distilled memory plugin (L0 capture → L1 atomic memory → L2 scenes → L3 persona) with automatic recall injection before each model step.",
|
|
7
7
|
"zh": "L0~L3 分层蒸馏记忆插件:自动捕获对话、抽取原子记忆、整合场景块、蒸馏核心画像,并在模型步骤前自动召回注入。"
|