@lemoncat7/dsh-partner 1.11.2 → 1.13.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 +25 -1
- package/docs/architecture.md +1 -0
- package/docs/memory-quality.md +115 -0
- package/docs/releases/1.12.0.md +25 -0
- package/lib/agent-runtime.d.ts +1 -1
- package/lib/agent-runtime.d.ts.map +1 -1
- package/lib/agent-runtime.js +16 -11
- package/lib/agent-runtime.js.map +1 -1
- package/lib/api/features/memory-layers-api.d.ts +5 -0
- package/lib/api/features/memory-layers-api.d.ts.map +1 -0
- package/lib/api/features/memory-layers-api.js +42 -0
- package/lib/api/features/memory-layers-api.js.map +1 -0
- package/lib/api/features/workspace-api.d.ts.map +1 -1
- package/lib/api/features/workspace-api.js +7 -0
- package/lib/api/features/workspace-api.js.map +1 -1
- package/lib/api/http.d.ts +1 -1
- package/lib/api/http.d.ts.map +1 -1
- package/lib/api/http.js +2 -2
- package/lib/api/http.js.map +1 -1
- package/lib/api.d.ts.map +1 -1
- package/lib/api.js +5 -1
- package/lib/api.js.map +1 -1
- package/lib/client-api.d.ts +2 -0
- package/lib/client-api.d.ts.map +1 -1
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +4902 -4453
- package/lib/client.js.map +4 -4
- package/lib/collaboration/composition.js +7 -3
- package/lib/collaboration/composition.js.map +1 -1
- package/lib/concern-store.d.ts +1 -0
- package/lib/concern-store.d.ts.map +1 -1
- package/lib/concern-store.js +17 -0
- package/lib/concern-store.js.map +1 -1
- package/lib/daily-review.d.ts +1 -0
- package/lib/daily-review.d.ts.map +1 -1
- package/lib/daily-review.js +14 -3
- package/lib/daily-review.js.map +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +13 -0
- package/lib/index.js.map +1 -1
- package/lib/memory-artifacts.d.ts +42 -0
- package/lib/memory-artifacts.d.ts.map +1 -0
- package/lib/memory-artifacts.js +120 -0
- package/lib/memory-artifacts.js.map +1 -0
- package/lib/memory-domain.d.ts +10 -0
- package/lib/memory-domain.d.ts.map +1 -1
- package/lib/memory-journal.d.ts +16 -0
- package/lib/memory-journal.d.ts.map +1 -0
- package/lib/memory-journal.js +51 -0
- package/lib/memory-journal.js.map +1 -0
- package/lib/memory-prompt-context.d.ts.map +1 -1
- package/lib/memory-prompt-context.js +2 -1
- package/lib/memory-prompt-context.js.map +1 -1
- package/lib/memory-quality.d.ts +4 -0
- package/lib/memory-quality.d.ts.map +1 -0
- package/lib/memory-quality.js +16 -0
- package/lib/memory-quality.js.map +1 -0
- package/lib/memory-reflection.d.ts +15 -2
- package/lib/memory-reflection.d.ts.map +1 -1
- package/lib/memory-reflection.js +101 -17
- package/lib/memory-reflection.js.map +1 -1
- package/lib/memory-retrieval.d.ts +5 -0
- package/lib/memory-retrieval.d.ts.map +1 -0
- package/lib/memory-retrieval.js +20 -0
- package/lib/memory-retrieval.js.map +1 -0
- package/lib/memory-store.d.ts +26 -2
- package/lib/memory-store.d.ts.map +1 -1
- package/lib/memory-store.js +142 -50
- package/lib/memory-store.js.map +1 -1
- package/lib/memory-worker.d.ts +25 -0
- package/lib/memory-worker.d.ts.map +1 -0
- package/lib/memory-worker.js +42 -0
- package/lib/memory-worker.js.map +1 -0
- package/lib/profile-domain.d.ts.map +1 -1
- package/lib/profile-domain.js +12 -4
- package/lib/profile-domain.js.map +1 -1
- package/lib/skills/import-request.d.ts +3 -0
- package/lib/skills/import-request.d.ts.map +1 -0
- package/lib/skills/import-request.js +26 -0
- package/lib/skills/import-request.js.map +1 -0
- package/lib/skills/package-zip.d.ts +5 -0
- package/lib/skills/package-zip.d.ts.map +1 -0
- package/lib/skills/package-zip.js +75 -0
- package/lib/skills/package-zip.js.map +1 -0
- package/lib/skills/package.d.ts +15 -0
- package/lib/skills/package.d.ts.map +1 -0
- package/lib/skills/package.js +48 -0
- package/lib/skills/package.js.map +1 -0
- package/lib/skills/repository.d.ts +2 -0
- package/lib/skills/repository.d.ts.map +1 -1
- package/lib/skills/repository.js +7 -0
- package/lib/skills/repository.js.map +1 -1
- package/lib/skills/service.d.ts +2 -0
- package/lib/skills/service.d.ts.map +1 -1
- package/lib/skills/service.js +10 -2
- package/lib/skills/service.js.map +1 -1
- package/lib/skills/task-planning.d.ts +2 -2
- package/lib/skills/task-planning.d.ts.map +1 -1
- package/lib/skills/task-planning.js +8 -1
- package/lib/skills/task-planning.js.map +1 -1
- package/lib/ui/memory/automation-settings.d.ts +8 -0
- package/lib/ui/memory/automation-settings.d.ts.map +1 -0
- package/lib/ui/memory/automation-settings.js +60 -0
- package/lib/ui/memory/automation-settings.js.map +1 -0
- package/lib/ui/memory/concern-board.d.ts +12 -0
- package/lib/ui/memory/concern-board.d.ts.map +1 -0
- package/lib/ui/memory/concern-board.js +129 -0
- package/lib/ui/memory/concern-board.js.map +1 -0
- package/lib/ui/memory/concern-panel.d.ts +7 -0
- package/lib/ui/memory/concern-panel.d.ts.map +1 -0
- package/lib/ui/memory/concern-panel.js +62 -0
- package/lib/ui/memory/concern-panel.js.map +1 -0
- package/lib/ui/memory/experience-view.d.ts +8 -0
- package/lib/ui/memory/experience-view.d.ts.map +1 -0
- package/lib/ui/memory/experience-view.js +52 -0
- package/lib/ui/memory/experience-view.js.map +1 -0
- package/lib/ui/memory/history-view.d.ts +6 -0
- package/lib/ui/memory/history-view.d.ts.map +1 -0
- package/lib/ui/memory/history-view.js +40 -0
- package/lib/ui/memory/history-view.js.map +1 -0
- package/lib/ui/memory/memory-cards.d.ts +14 -0
- package/lib/ui/memory/memory-cards.d.ts.map +1 -0
- package/lib/ui/memory/memory-cards.js +17 -0
- package/lib/ui/memory/memory-cards.js.map +1 -0
- package/lib/ui/memory/memory-detail.d.ts +8 -0
- package/lib/ui/memory/memory-detail.d.ts.map +1 -0
- package/lib/ui/memory/memory-detail.js +45 -0
- package/lib/ui/memory/memory-detail.js.map +1 -0
- package/lib/ui/memory/memory-graph.d.ts +8 -0
- package/lib/ui/memory/memory-graph.d.ts.map +1 -0
- package/lib/ui/memory/memory-graph.js +43 -0
- package/lib/ui/memory/memory-graph.js.map +1 -0
- package/lib/ui/memory/memory-library.d.ts +9 -0
- package/lib/ui/memory/memory-library.d.ts.map +1 -0
- package/lib/ui/memory/memory-library.js +38 -0
- package/lib/ui/memory/memory-library.js.map +1 -0
- package/lib/ui/memory/memory-panel.d.ts +10 -0
- package/lib/ui/memory/memory-panel.d.ts.map +1 -0
- package/lib/ui/memory/memory-panel.js +48 -0
- package/lib/ui/memory/memory-panel.js.map +1 -0
- package/lib/ui/memory/types.d.ts +44 -0
- package/lib/ui/memory/types.d.ts.map +1 -0
- package/lib/ui/memory/types.js +2 -0
- package/lib/ui/memory/types.js.map +1 -0
- package/lib/ui/memory/use-memory-resource.d.ts +9 -0
- package/lib/ui/memory/use-memory-resource.d.ts.map +1 -0
- package/lib/ui/memory/use-memory-resource.js +65 -0
- package/lib/ui/memory/use-memory-resource.js.map +1 -0
- package/lib/ui/skill-import-dialog.d.ts +5 -0
- package/lib/ui/skill-import-dialog.d.ts.map +1 -0
- package/lib/ui/skill-import-dialog.js +72 -0
- package/lib/ui/skill-import-dialog.js.map +1 -0
- package/lib/ui/skills-panel.d.ts.map +1 -1
- package/lib/ui/skills-panel.js +3 -1
- package/lib/ui/skills-panel.js.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { DatabaseSync } from 'node:sqlite';
|
|
2
|
+
import type { ConversationTurn, PartnerMemory } from './memory-domain.js';
|
|
3
|
+
export interface SceneProposal {
|
|
4
|
+
title: string;
|
|
5
|
+
memoryIds: string[];
|
|
6
|
+
}
|
|
7
|
+
export interface SceneView extends SceneProposal {
|
|
8
|
+
id: string;
|
|
9
|
+
scopeId: string;
|
|
10
|
+
updatedAt: number;
|
|
11
|
+
summary: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ExperienceProposal {
|
|
14
|
+
title: string;
|
|
15
|
+
steps: string[];
|
|
16
|
+
evidence: Array<{
|
|
17
|
+
turnId: string;
|
|
18
|
+
quote: string;
|
|
19
|
+
}>;
|
|
20
|
+
}
|
|
21
|
+
export interface ExperienceDraft extends ExperienceProposal {
|
|
22
|
+
id: string;
|
|
23
|
+
scopeId: string;
|
|
24
|
+
status: 'draft' | 'approved' | 'rejected';
|
|
25
|
+
updatedAt: number;
|
|
26
|
+
version: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function parseArtifactProposals(value: Record<string, unknown>): {
|
|
29
|
+
scenes: SceneProposal[];
|
|
30
|
+
experiences: ExperienceProposal[];
|
|
31
|
+
};
|
|
32
|
+
/** Repetition alone is not success. Require explicit positive user evidence in
|
|
33
|
+
* at least two distinct sessions; the procedure still requires human review. */
|
|
34
|
+
export declare function groundExperiences(items: ExperienceProposal[], turns: ConversationTurn[]): ExperienceProposal[];
|
|
35
|
+
export declare function initializeMemoryArtifacts(db: DatabaseSync): void;
|
|
36
|
+
export declare function applyMemoryArtifacts(db: DatabaseSync, scopeId: string, memories: PartnerMemory[], scenes: SceneProposal[], experiences: ExperienceProposal[], now: number): void;
|
|
37
|
+
export declare function readScenes(db: DatabaseSync, scopeId: string, memories: PartnerMemory[], now?: number): SceneView[];
|
|
38
|
+
export declare function readExperienceDrafts(db: DatabaseSync, scopeId: string): ExperienceDraft[];
|
|
39
|
+
export declare function readExperienceDraft(db: DatabaseSync, scopeId: string, id: string): ExperienceDraft | undefined;
|
|
40
|
+
export declare function reviewExperienceDraft(db: DatabaseSync, scopeId: string, id: string, version: string, action: 'approved' | 'rejected'): void;
|
|
41
|
+
export declare function experienceMarkdown(draft: ExperienceDraft): string;
|
|
42
|
+
//# sourceMappingURL=memory-artifacts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-artifacts.d.ts","sourceRoot":"","sources":["../src/memory-artifacts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEzE,MAAM,WAAW,aAAa;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE;AACrE,MAAM,WAAW,SAAU,SAAQ,aAAa;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AACpH,MAAM,WAAW,kBAAkB;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE;AAC1H,MAAM,WAAW,eAAgB,SAAQ,kBAAkB;IACzD,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAC3G;AAMD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAAC,WAAW,EAAE,kBAAkB,EAAE,CAAA;CAAE,CAgBrI;AAED;gFACgF;AAChF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,kBAAkB,EAAE,CAc9G;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAQhE;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,kBAAkB,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAsBhL;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,GAAG,SAAa,GAAG,SAAS,EAAE,CAYtH;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CAKzF;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAI9G;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAG3I;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAMjE"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
const digest = (value) => createHash('sha256').update(value).digest('hex').slice(0, 24);
|
|
3
|
+
const canonical = (value) => value.normalize('NFKC').replace(/\s+/g, ' ').trim();
|
|
4
|
+
const text = (value, limit) => typeof value === 'string' ? canonical(value).slice(0, limit) : '';
|
|
5
|
+
const object = (value) => value !== null && typeof value === 'object' ? value : {};
|
|
6
|
+
export function parseArtifactProposals(value) {
|
|
7
|
+
const scenes = (Array.isArray(value.scenes) ? value.scenes : []).slice(0, 8).flatMap(raw => {
|
|
8
|
+
const item = object(raw);
|
|
9
|
+
const title = text(item.title, 120);
|
|
10
|
+
const memoryIds = [...new Set((Array.isArray(item.memoryIds) ? item.memoryIds : []).map(id => text(id, 160)).filter(Boolean))].slice(0, 12);
|
|
11
|
+
return title && memoryIds.length ? [{ title, memoryIds }] : [];
|
|
12
|
+
});
|
|
13
|
+
const experiences = (Array.isArray(value.experiences) ? value.experiences : []).slice(0, 3).flatMap(raw => {
|
|
14
|
+
const item = object(raw);
|
|
15
|
+
const title = text(item.title, 120);
|
|
16
|
+
const steps = (Array.isArray(item.steps) ? item.steps : []).map(step => text(step, 400)).filter(Boolean).slice(0, 8);
|
|
17
|
+
const evidence = (Array.isArray(item.evidence) ? item.evidence : []).slice(0, 8).map(rawEvidence => {
|
|
18
|
+
const source = object(rawEvidence);
|
|
19
|
+
return { turnId: text(source.turnId, 160), quote: text(source.quote, 300) };
|
|
20
|
+
}).filter(source => source.turnId && source.quote);
|
|
21
|
+
return title && steps.length && evidence.length ? [{ title, steps, evidence }] : [];
|
|
22
|
+
});
|
|
23
|
+
return { scenes, experiences };
|
|
24
|
+
}
|
|
25
|
+
/** Repetition alone is not success. Require explicit positive user evidence in
|
|
26
|
+
* at least two distinct sessions; the procedure still requires human review. */
|
|
27
|
+
export function groundExperiences(items, turns) {
|
|
28
|
+
const byId = new Map(turns.map(turn => [turn.id, turn]));
|
|
29
|
+
return items.filter(item => {
|
|
30
|
+
const sessions = new Set();
|
|
31
|
+
for (const evidence of item.evidence) {
|
|
32
|
+
const turn = byId.get(evidence.turnId);
|
|
33
|
+
if (!turn || !canonical(turn.user).includes(canonical(evidence.quote)))
|
|
34
|
+
return false;
|
|
35
|
+
const speech = canonical(turn.user);
|
|
36
|
+
const offset = speech.indexOf(canonical(evidence.quote));
|
|
37
|
+
const surrounding = speech.slice(Math.max(0, offset - 12), offset + evidence.quote.length + 24);
|
|
38
|
+
if (/(?:没|未|不|失败|还需|但是|不过|然而)/u.test(surrounding))
|
|
39
|
+
continue;
|
|
40
|
+
if (/(?:已(?:经)?解决|测试通过|验收通过|验证通过|运行正常|确实可用|成功了|works correctly|tests passed)/iu.test(evidence.quote))
|
|
41
|
+
sessions.add(turn.sessionId);
|
|
42
|
+
}
|
|
43
|
+
return sessions.size >= 2;
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
export function initializeMemoryArtifacts(db) {
|
|
47
|
+
db.exec(`CREATE TABLE IF NOT EXISTS memory_scenes (
|
|
48
|
+
id TEXT PRIMARY KEY, scope_id TEXT NOT NULL, title TEXT NOT NULL, memory_ids TEXT NOT NULL, updated_at INTEGER NOT NULL
|
|
49
|
+
); CREATE INDEX IF NOT EXISTS memory_scenes_scope ON memory_scenes(scope_id, updated_at);
|
|
50
|
+
CREATE TABLE IF NOT EXISTS memory_experiences (
|
|
51
|
+
id TEXT PRIMARY KEY, scope_id TEXT NOT NULL, payload TEXT NOT NULL, status TEXT NOT NULL,
|
|
52
|
+
version TEXT NOT NULL, updated_at INTEGER NOT NULL
|
|
53
|
+
); CREATE INDEX IF NOT EXISTS memory_experiences_scope ON memory_experiences(scope_id, updated_at);`);
|
|
54
|
+
}
|
|
55
|
+
export function applyMemoryArtifacts(db, scopeId, memories, scenes, experiences, now) {
|
|
56
|
+
const valid = new Set(memories.filter(item => item.scopeId === scopeId && item.status === 'active'
|
|
57
|
+
&& (item.expiresAt === undefined || item.expiresAt > now)).map(item => item.id));
|
|
58
|
+
for (const scene of scenes.slice(0, 8)) {
|
|
59
|
+
if (!scene.memoryIds.every(id => valid.has(id)))
|
|
60
|
+
continue;
|
|
61
|
+
const id = `scene-${digest(`${scopeId}\0${canonical(scene.title)}`)}`;
|
|
62
|
+
if (!db.prepare('SELECT 1 FROM memory_scenes WHERE id=?').get(id)
|
|
63
|
+
&& Number(db.prepare('SELECT count(*) AS n FROM memory_scenes WHERE scope_id=?').get(scopeId)?.n) >= 100)
|
|
64
|
+
continue;
|
|
65
|
+
db.prepare(`INSERT INTO memory_scenes VALUES (?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET
|
|
66
|
+
memory_ids=excluded.memory_ids, updated_at=excluded.updated_at`).run(id, scopeId, scene.title, JSON.stringify(scene.memoryIds), now);
|
|
67
|
+
}
|
|
68
|
+
for (const item of experiences.slice(0, 3)) {
|
|
69
|
+
const id = `experience-${digest(`${scopeId}\0${canonical(item.title)}`)}`;
|
|
70
|
+
const payload = JSON.stringify(item);
|
|
71
|
+
const version = digest(payload);
|
|
72
|
+
const existing = db.prepare('SELECT status, version FROM memory_experiences WHERE id=?').get(id);
|
|
73
|
+
if (!existing && Number(db.prepare('SELECT count(*) AS n FROM memory_experiences WHERE scope_id=?').get(scopeId)?.n) >= 100)
|
|
74
|
+
continue;
|
|
75
|
+
// Rejected/approved drafts are immutable. Evolving an installed skill is a
|
|
76
|
+
// separate explicit action, never an automatic write-back.
|
|
77
|
+
if (existing && (existing.status !== 'draft' || existing.version === version))
|
|
78
|
+
continue;
|
|
79
|
+
db.prepare(`INSERT INTO memory_experiences VALUES (?, ?, ?, 'draft', ?, ?) ON CONFLICT(id)
|
|
80
|
+
DO UPDATE SET payload=excluded.payload, version=excluded.version, updated_at=excluded.updated_at`).run(id, scopeId, payload, version, now);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
export function readScenes(db, scopeId, memories, now = Date.now()) {
|
|
84
|
+
const byId = new Map(memories.filter(item => item.scopeId === scopeId && item.status === 'active'
|
|
85
|
+
&& (item.expiresAt === undefined || item.expiresAt > now)).map(item => [item.id, item]));
|
|
86
|
+
return db.prepare('SELECT * FROM memory_scenes WHERE scope_id=? ORDER BY updated_at DESC LIMIT 30').all(scopeId).flatMap(row => {
|
|
87
|
+
const ids = JSON.parse(String(row.memory_ids));
|
|
88
|
+
const sources = ids.flatMap(id => byId.has(id) ? [byId.get(id)] : []);
|
|
89
|
+
if (!sources.length)
|
|
90
|
+
return [];
|
|
91
|
+
// A derived view, not another fact store: deletion/correction takes effect immediately.
|
|
92
|
+
return [{ id: String(row.id), scopeId, title: String(row.title), memoryIds: sources.map(item => item.id),
|
|
93
|
+
updatedAt: Math.max(Number(row.updated_at), ...sources.map(item => item.updatedAt)),
|
|
94
|
+
summary: sources.map(item => `${item.subject}:${item.content}`).join('\n').slice(0, 2400) }];
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
export function readExperienceDrafts(db, scopeId) {
|
|
98
|
+
return db.prepare('SELECT * FROM memory_experiences WHERE scope_id=? ORDER BY updated_at DESC LIMIT 30').all(scopeId).map(row => ({
|
|
99
|
+
...JSON.parse(String(row.payload)), id: String(row.id), scopeId,
|
|
100
|
+
status: String(row.status), updatedAt: Number(row.updated_at), version: String(row.version),
|
|
101
|
+
}));
|
|
102
|
+
}
|
|
103
|
+
export function readExperienceDraft(db, scopeId, id) {
|
|
104
|
+
const row = db.prepare('SELECT * FROM memory_experiences WHERE scope_id=? AND id=?').get(scopeId, id);
|
|
105
|
+
return row ? { ...JSON.parse(String(row.payload)), id, scopeId,
|
|
106
|
+
status: String(row.status), updatedAt: Number(row.updated_at), version: String(row.version) } : undefined;
|
|
107
|
+
}
|
|
108
|
+
export function reviewExperienceDraft(db, scopeId, id, version, action) {
|
|
109
|
+
const result = db.prepare("UPDATE memory_experiences SET status=? WHERE scope_id=? AND id=? AND version=? AND status='draft'").run(action, scopeId, id, version);
|
|
110
|
+
if (!result.changes)
|
|
111
|
+
throw new Error('经验草稿已变化或已审核,请重新读取后再操作');
|
|
112
|
+
}
|
|
113
|
+
export function experienceMarkdown(draft) {
|
|
114
|
+
return ['---', `name: ${draft.id}`, `description: ${JSON.stringify(draft.title)}`, '---', '',
|
|
115
|
+
`# ${draft.title}`, '', '仅在对应场景适用;不扩大工具权限,不替代用户当前指令。', '',
|
|
116
|
+
...draft.steps.map((step, index) => `${index + 1}. ${step}`), '',
|
|
117
|
+
'## 验证与边界', '', '执行后验证结果;失败时停止并报告,不将重复调用视为成功。涉及删除、覆盖、发布等操作须遵守当前授权。', '',
|
|
118
|
+
'## 来源', '', ...draft.evidence.map(item => `- ${item.turnId}:${item.quote}`)].join('\n');
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=memory-artifacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-artifacts.js","sourceRoot":"","sources":["../src/memory-artifacts.ts"],"names":[],"mappings":"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"}
|
package/lib/memory-domain.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AppliedConcernLifecycleDirective, ConcernCandidate } from './concern-domain.js';
|
|
2
|
+
import type { SceneProposal, ExperienceProposal, SceneView } from './memory-artifacts.js';
|
|
2
3
|
export type MemoryKind = 'profile' | 'preference' | 'task' | 'event' | 'relationship' | 'emotion';
|
|
3
4
|
export type MemoryStatus = 'active' | 'completed' | 'superseded' | 'expired';
|
|
4
5
|
export interface ConversationTurn {
|
|
@@ -33,6 +34,7 @@ export interface PartnerMemory {
|
|
|
33
34
|
evidence: MemoryEvidence[];
|
|
34
35
|
}
|
|
35
36
|
export interface UserProfileSnapshot {
|
|
37
|
+
preferences?: PartnerMemory[];
|
|
36
38
|
companionId: string;
|
|
37
39
|
scopeId: string;
|
|
38
40
|
version: string;
|
|
@@ -42,6 +44,8 @@ export interface UserProfileSnapshot {
|
|
|
42
44
|
lockedCount: number;
|
|
43
45
|
}
|
|
44
46
|
export interface MemoryRecallContext {
|
|
47
|
+
history?: Array<Pick<ConversationTurn, 'id' | 'at' | 'user' | 'assistant'>>;
|
|
48
|
+
scenes?: SceneView[];
|
|
45
49
|
profile: UserProfileSnapshot;
|
|
46
50
|
relevant: PartnerMemory[];
|
|
47
51
|
connections: MemoryContextConnection[];
|
|
@@ -59,6 +63,10 @@ export interface DailyReflection {
|
|
|
59
63
|
turnCount: number;
|
|
60
64
|
}
|
|
61
65
|
export interface MemoryCandidate {
|
|
66
|
+
targetMemoryId?: string;
|
|
67
|
+
evidenceQuote?: string;
|
|
68
|
+
sourceTurnId?: string;
|
|
69
|
+
sourceEvidence?: MemoryEvidence;
|
|
62
70
|
kind: MemoryKind;
|
|
63
71
|
subject: string;
|
|
64
72
|
content: string;
|
|
@@ -112,6 +120,8 @@ export interface MemoryRelationReviewContext extends MemoryRelation {
|
|
|
112
120
|
targetKind: MemoryKind;
|
|
113
121
|
}
|
|
114
122
|
export interface DailyReviewResult extends ReflectionResult {
|
|
123
|
+
scenes?: SceneProposal[];
|
|
124
|
+
experiences?: ExperienceProposal[];
|
|
115
125
|
relations: MemoryRelationCandidate[];
|
|
116
126
|
}
|
|
117
127
|
//# sourceMappingURL=memory-domain.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-domain.d.ts","sourceRoot":"","sources":["../src/memory-domain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"memory-domain.d.ts","sourceRoot":"","sources":["../src/memory-domain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { DatabaseSync } from 'node:sqlite';
|
|
2
|
+
import type { ConversationTurn, ReflectionResult } from './memory-domain.js';
|
|
3
|
+
export interface MemoryJob {
|
|
4
|
+
turn: ConversationTurn;
|
|
5
|
+
token: string;
|
|
6
|
+
attempts: number;
|
|
7
|
+
result?: ReflectionResult;
|
|
8
|
+
}
|
|
9
|
+
/** SQL-only durable journal. Connections and transactions belong to the memory store. */
|
|
10
|
+
export declare function initializeMemoryJournal(db: DatabaseSync): void;
|
|
11
|
+
export declare function enqueueMemoryJob(db: DatabaseSync, turn: ConversationTurn): void;
|
|
12
|
+
export declare function claimMemoryJob(db: DatabaseSync, now: number): MemoryJob | undefined;
|
|
13
|
+
export declare function checkpointMemoryJob(db: DatabaseSync, job: MemoryJob, result: ReflectionResult): void;
|
|
14
|
+
export declare function settleMemoryJob(db: DatabaseSync, job: MemoryJob, error?: string, now?: number): void;
|
|
15
|
+
export declare function assertMemoryLease(db: DatabaseSync, job: MemoryJob): void;
|
|
16
|
+
//# sourceMappingURL=memory-journal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-journal.d.ts","sourceRoot":"","sources":["../src/memory-journal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAE5E,MAAM,WAAW,SAAS;IAAG,IAAI,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAAE;AAGjH,yFAAyF;AACzF,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAS9D;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAG/E;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAcnF;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAIpG;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,IAAI,CAMxG;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAIxE"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
const LEASE_MS = 5 * 60_000;
|
|
3
|
+
/** SQL-only durable journal. Connections and transactions belong to the memory store. */
|
|
4
|
+
export function initializeMemoryJournal(db) {
|
|
5
|
+
db.exec(`CREATE TABLE IF NOT EXISTS memory_jobs (
|
|
6
|
+
id TEXT PRIMARY KEY, scope_id TEXT NOT NULL, at INTEGER NOT NULL, turn_json TEXT NOT NULL,
|
|
7
|
+
result_json TEXT, done INTEGER NOT NULL DEFAULT 0, attempts INTEGER NOT NULL DEFAULT 0,
|
|
8
|
+
next_at INTEGER NOT NULL DEFAULT 0, lease_token TEXT, lease_until INTEGER NOT NULL DEFAULT 0,
|
|
9
|
+
last_error TEXT, committed INTEGER NOT NULL DEFAULT 0
|
|
10
|
+
);
|
|
11
|
+
CREATE INDEX IF NOT EXISTS memory_jobs_pending ON memory_jobs(done, next_at, at);
|
|
12
|
+
CREATE INDEX IF NOT EXISTS memory_jobs_scope ON memory_jobs(scope_id, at);`);
|
|
13
|
+
}
|
|
14
|
+
export function enqueueMemoryJob(db, turn) {
|
|
15
|
+
db.prepare('INSERT OR IGNORE INTO memory_jobs (id, scope_id, at, turn_json) VALUES (?, ?, ?, ?)')
|
|
16
|
+
.run(turn.id, turn.scopeId, turn.at, JSON.stringify(turn));
|
|
17
|
+
}
|
|
18
|
+
export function claimMemoryJob(db, now) {
|
|
19
|
+
// One lease per companion. Within a scope, an older failed turn blocks newer
|
|
20
|
+
// turns, but does not prevent unrelated scopes from making progress.
|
|
21
|
+
const token = randomUUID();
|
|
22
|
+
const row = db.prepare(`UPDATE memory_jobs SET lease_token=?, lease_until=? WHERE id=(
|
|
23
|
+
SELECT j.id FROM memory_jobs j WHERE j.done=0 AND j.next_at<=? AND j.lease_until<=?
|
|
24
|
+
AND NOT EXISTS (SELECT 1 FROM memory_jobs WHERE done=0 AND lease_until>?)
|
|
25
|
+
AND NOT EXISTS (SELECT 1 FROM memory_jobs p WHERE p.scope_id=j.scope_id AND p.done=0
|
|
26
|
+
AND (p.at<j.at OR (p.at=j.at AND p.rowid<j.rowid)))
|
|
27
|
+
ORDER BY j.at, j.rowid LIMIT 1
|
|
28
|
+
) RETURNING turn_json, result_json, attempts`).get(token, now + LEASE_MS, now, now, now);
|
|
29
|
+
if (!row)
|
|
30
|
+
return undefined;
|
|
31
|
+
return { turn: JSON.parse(String(row.turn_json)), token, attempts: Number(row.attempts),
|
|
32
|
+
...(row.result_json ? { result: JSON.parse(String(row.result_json)) } : {}) };
|
|
33
|
+
}
|
|
34
|
+
export function checkpointMemoryJob(db, job, result) {
|
|
35
|
+
const changed = db.prepare('UPDATE memory_jobs SET result_json=? WHERE id=? AND lease_token=? AND done=0')
|
|
36
|
+
.run(JSON.stringify(result), job.turn.id, job.token);
|
|
37
|
+
if (!changed.changes)
|
|
38
|
+
throw new Error('memory job lease was lost');
|
|
39
|
+
}
|
|
40
|
+
export function settleMemoryJob(db, job, error, now = Date.now()) {
|
|
41
|
+
const delay = Math.min(60 * 60_000, 30_000 * 2 ** Math.min(job.attempts, 7));
|
|
42
|
+
db.prepare(`UPDATE memory_jobs SET done=?, attempts=attempts+?, next_at=?, lease_token=NULL,
|
|
43
|
+
lease_until=0, last_error=? WHERE id=? AND lease_token=?`)
|
|
44
|
+
.run(error === undefined ? 1 : 0, error === undefined ? 0 : 1, error === undefined ? 0 : now + delay, error?.slice(0, 500) ?? null, job.turn.id, job.token);
|
|
45
|
+
}
|
|
46
|
+
export function assertMemoryLease(db, job) {
|
|
47
|
+
if (!db.prepare('SELECT 1 FROM memory_jobs WHERE id=? AND lease_token=? AND done=0').get(job.turn.id, job.token)) {
|
|
48
|
+
throw new Error('memory job lease was lost');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=memory-journal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-journal.js","sourceRoot":"","sources":["../src/memory-journal.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-prompt-context.d.ts","sourceRoot":"","sources":["../src/memory-prompt-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,2BAA2B,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvH,eAAO,MAAM,6BAA6B,OAAQ,CAAA;AAClD,eAAO,MAAM,8BAA8B,OAAQ,CAAA;AACnD,eAAO,MAAM,sBAAsB,QAAS,CAAA;AAC5C,eAAO,MAAM,wBAAwB,OAAQ,CAAA;AAC7C,eAAO,MAAM,0BAA0B,OAAQ,CAAA;AAC/C,eAAO,MAAM,yBAAyB,OAAQ,CAAA;AAE9C,UAAU,iBAAiB;IACzB,UAAU,EAAE,eAAe,CAAA;IAC3B,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,iBAAiB,EAAE,2BAA2B,EAAE,CAAA;IAChD,KAAK,EAAE,gBAAgB,EAAE,CAAA;CAC1B;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,aAAa,EAAE,EACzB,KAAK,EAAE,eAAe,GAAG,SAAS,EAClC,QAAQ,EAAE,cAAc,EAAE,GACzB,MAAM,CAQR;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,MAAM,CAcnH;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"memory-prompt-context.d.ts","sourceRoot":"","sources":["../src/memory-prompt-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,2BAA2B,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvH,eAAO,MAAM,6BAA6B,OAAQ,CAAA;AAClD,eAAO,MAAM,8BAA8B,OAAQ,CAAA;AACnD,eAAO,MAAM,sBAAsB,QAAS,CAAA;AAC5C,eAAO,MAAM,wBAAwB,OAAQ,CAAA;AAC7C,eAAO,MAAM,0BAA0B,OAAQ,CAAA;AAC/C,eAAO,MAAM,yBAAyB,OAAQ,CAAA;AAE9C,UAAU,iBAAiB;IACzB,UAAU,EAAE,eAAe,CAAA;IAC3B,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,iBAAiB,EAAE,2BAA2B,EAAE,CAAA;IAChD,KAAK,EAAE,gBAAgB,EAAE,CAAA;CAC1B;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,aAAa,EAAE,EACzB,KAAK,EAAE,eAAe,GAAG,SAAS,EAClC,QAAQ,EAAE,cAAc,EAAE,GACzB,MAAM,CAQR;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,MAAM,CAcnH;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAmB5H;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAc1G"}
|
|
@@ -32,6 +32,7 @@ export function compactMemories(memories, limit, charBudget) {
|
|
|
32
32
|
id: memory.id,
|
|
33
33
|
kind: memory.kind,
|
|
34
34
|
subject: clip(memory.subject, 120),
|
|
35
|
+
status: memory.status,
|
|
35
36
|
confidence: precision(memory.confidence),
|
|
36
37
|
importance: precision(memory.importance),
|
|
37
38
|
evidenceCount: memory.evidence.length,
|
|
@@ -50,7 +51,7 @@ export function compactTurns(turns, charBudget) {
|
|
|
50
51
|
const minimumTurnBudget = 48;
|
|
51
52
|
const completeTurnBudget = Math.max(charBudget, turns.length * minimumTurnBudget + turns.length + 1);
|
|
52
53
|
return fitEntries(turns, completeTurnBudget, (turn, entryBudget) => {
|
|
53
|
-
const base = { at: turn.at };
|
|
54
|
+
const base = { id: turn.id, sessionId: turn.sessionId, at: turn.at };
|
|
54
55
|
if (turn.concernDirective !== undefined)
|
|
55
56
|
base.concernDirective = {
|
|
56
57
|
action: turn.concernDirective.action,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-prompt-context.js","sourceRoot":"","sources":["../src/memory-prompt-context.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"memory-prompt-context.js","sourceRoot":"","sources":["../src/memory-prompt-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ConversationTurn, MemoryCandidate } from './memory-domain.js';
|
|
2
|
+
/** Ground model proposals in user speech, never in assistant summaries. */
|
|
3
|
+
export declare function groundMemoryCandidates(candidates: MemoryCandidate[], turns: ConversationTurn[]): MemoryCandidate[];
|
|
4
|
+
//# sourceMappingURL=memory-quality.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-quality.d.ts","sourceRoot":"","sources":["../src/memory-quality.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAI3E,2EAA2E;AAC3E,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,eAAe,EAAE,CAUlH"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const normalized = (value) => value.normalize('NFKC').replace(/\s+/g, ' ').trim();
|
|
2
|
+
/** Ground model proposals in user speech, never in assistant summaries. */
|
|
3
|
+
export function groundMemoryCandidates(candidates, turns) {
|
|
4
|
+
return candidates.flatMap(candidate => {
|
|
5
|
+
const quote = normalized(candidate.evidenceQuote ?? '');
|
|
6
|
+
if (quote.length < 2)
|
|
7
|
+
return [];
|
|
8
|
+
const matches = turns.filter(turn => (!candidate.sourceTurnId || turn.id === candidate.sourceTurnId)
|
|
9
|
+
&& normalized(turn.user).includes(quote));
|
|
10
|
+
if (matches.length !== 1)
|
|
11
|
+
return [];
|
|
12
|
+
const source = matches[0];
|
|
13
|
+
return [{ ...candidate, sourceEvidence: { turnId: source.id, at: source.at, excerpt: quote.slice(0, 300) } }];
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=memory-quality.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-quality.js","sourceRoot":"","sources":["../src/memory-quality.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;AAEjG,2EAA2E;AAC3E,MAAM,UAAU,sBAAsB,CAAC,UAA6B,EAAE,KAAyB;IAC7F,OAAO,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QACpC,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,aAAa,IAAI,EAAE,CAAC,CAAA;QACvD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,CAAA;QAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,YAAY,CAAC;eAC/F,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;QAC3C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAA;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAE,CAAA;QAC1B,OAAO,CAAC,EAAE,GAAG,SAAS,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;IAC/G,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -13,11 +13,24 @@ export declare class MemoryReflectionService {
|
|
|
13
13
|
private readonly ctx;
|
|
14
14
|
private readonly store;
|
|
15
15
|
private readonly concerns;
|
|
16
|
-
private readonly
|
|
16
|
+
private readonly running;
|
|
17
|
+
private readonly controllers;
|
|
18
|
+
private readonly modelSlots;
|
|
19
|
+
private readonly lastPruned;
|
|
20
|
+
private closed;
|
|
21
|
+
close(): void;
|
|
17
22
|
constructor(ctx: ReflectionContext, store: PartnerMemoryStore, concerns: PartnerConcernStore);
|
|
18
23
|
reflect(companion: Companion, turn: ConversationTurn): Promise<PartnerConcern[]>;
|
|
24
|
+
isRunning(companionId: string): boolean;
|
|
25
|
+
processPending(companion: Companion, notify?: (scopeId: string, created: PartnerConcern[]) => Promise<void>): Promise<{
|
|
26
|
+
scopeId: string;
|
|
27
|
+
created: PartnerConcern[];
|
|
28
|
+
} | undefined>;
|
|
29
|
+
private processJob;
|
|
19
30
|
reviewDay(companion: Companion, target: DailyReviewTarget): Promise<PartnerConcern[]>;
|
|
20
|
-
private
|
|
31
|
+
private runDailyReview;
|
|
32
|
+
private extract;
|
|
33
|
+
private applyConcerns;
|
|
21
34
|
}
|
|
22
35
|
export declare function protectConcernDirective(candidates: ConcernCandidate[], directive: ConversationTurn['concernDirective']): ConcernCandidate[];
|
|
23
36
|
export declare function explicitConcernDirective(value: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-reflection.d.ts","sourceRoot":"","sources":["../src/memory-reflection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAA;AAEnF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAqD,KAAK,gBAAgB,EAAyB,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC1J,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAmD,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACnK,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"memory-reflection.d.ts","sourceRoot":"","sources":["../src/memory-reflection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAA;AAEnF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAqD,KAAK,gBAAgB,EAAyB,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC1J,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAmD,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACnK,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAQ7D,KAAK,iBAAiB,GAAG,OAAO,GAAG;IAAE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAAC,iBAAiB,EAAE,uBAAuB,CAAA;CAAE,CAAA;AAEtG,qBAAa,uBAAuB;IAOtB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAqB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAsB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAN1H,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IACzD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwB;IACnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4B;IACvD,OAAO,CAAC,MAAM,CAAQ;IACtB,KAAK,IAAI,IAAI;gBACgB,GAAG,EAAE,iBAAiB,EAAmB,KAAK,EAAE,kBAAkB,EAAmB,QAAQ,EAAE,mBAAmB;IAEzI,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAOtF,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAEjC,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,cAAc,EAAE,CAAA;KAAE,GAAG,SAAS,CAAC;YAYzK,UAAU;IAqBlB,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;YAW7E,cAAc;YA6Bd,OAAO;YA2BP,aAAa;CAc5B;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,gBAAgB,EAAE,EAC9B,SAAS,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,GAC9C,gBAAgB,EAAE,CAIpB;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAQ/D;AAmCD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAiB7D;AAiBD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAe/D"}
|