@lemoncat7/dsh-partner 1.1.6 → 1.4.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.
Files changed (88) hide show
  1. package/README.md +21 -6
  2. package/lib/agent-runtime.d.ts +46 -3
  3. package/lib/agent-runtime.d.ts.map +1 -1
  4. package/lib/agent-runtime.js +599 -50
  5. package/lib/agent-runtime.js.map +1 -1
  6. package/lib/api.d.ts +2 -0
  7. package/lib/api.d.ts.map +1 -1
  8. package/lib/api.js +44 -4
  9. package/lib/api.js.map +1 -1
  10. package/lib/autonomy.d.ts +2 -7
  11. package/lib/autonomy.d.ts.map +1 -1
  12. package/lib/autonomy.js +40 -28
  13. package/lib/autonomy.js.map +1 -1
  14. package/lib/channels/manager.d.ts +1 -0
  15. package/lib/channels/manager.d.ts.map +1 -1
  16. package/lib/channels/manager.js +11 -3
  17. package/lib/channels/manager.js.map +1 -1
  18. package/lib/client-api.d.ts +60 -0
  19. package/lib/client-api.d.ts.map +1 -1
  20. package/lib/client-api.js.map +1 -1
  21. package/lib/client.d.ts.map +1 -1
  22. package/lib/client.js +1880 -620
  23. package/lib/client.js.map +4 -4
  24. package/lib/concern-domain.d.ts +132 -0
  25. package/lib/concern-domain.d.ts.map +1 -0
  26. package/lib/concern-domain.js +212 -0
  27. package/lib/concern-domain.js.map +1 -0
  28. package/lib/concern-notification.d.ts +6 -0
  29. package/lib/concern-notification.d.ts.map +1 -0
  30. package/lib/concern-notification.js +27 -0
  31. package/lib/concern-notification.js.map +1 -0
  32. package/lib/concern-sources.d.ts +10 -0
  33. package/lib/concern-sources.d.ts.map +1 -0
  34. package/lib/concern-sources.js +81 -0
  35. package/lib/concern-sources.js.map +1 -0
  36. package/lib/concern-store.d.ts +68 -0
  37. package/lib/concern-store.d.ts.map +1 -0
  38. package/lib/concern-store.js +611 -0
  39. package/lib/concern-store.js.map +1 -0
  40. package/lib/concern-tool.d.ts +25 -0
  41. package/lib/concern-tool.d.ts.map +1 -0
  42. package/lib/concern-tool.js +145 -0
  43. package/lib/concern-tool.js.map +1 -0
  44. package/lib/daily-review.d.ts +3 -1
  45. package/lib/daily-review.d.ts.map +1 -1
  46. package/lib/daily-review.js +8 -2
  47. package/lib/daily-review.js.map +1 -1
  48. package/lib/domain.d.ts +4 -1
  49. package/lib/domain.d.ts.map +1 -1
  50. package/lib/domain.js +23 -0
  51. package/lib/domain.js.map +1 -1
  52. package/lib/glass-surface.d.ts +20 -0
  53. package/lib/glass-surface.d.ts.map +1 -0
  54. package/lib/glass-surface.js +119 -0
  55. package/lib/glass-surface.js.map +1 -0
  56. package/lib/heartbeat.d.ts +10 -2
  57. package/lib/heartbeat.d.ts.map +1 -1
  58. package/lib/heartbeat.js +81 -17
  59. package/lib/heartbeat.js.map +1 -1
  60. package/lib/index.d.ts.map +1 -1
  61. package/lib/index.js +36 -5
  62. package/lib/index.js.map +1 -1
  63. package/lib/memory-domain.d.ts +39 -7
  64. package/lib/memory-domain.d.ts.map +1 -1
  65. package/lib/memory-prompt-context.d.ts +20 -0
  66. package/lib/memory-prompt-context.d.ts.map +1 -0
  67. package/lib/memory-prompt-context.js +138 -0
  68. package/lib/memory-prompt-context.js.map +1 -0
  69. package/lib/memory-reflection.d.ts +8 -3
  70. package/lib/memory-reflection.d.ts.map +1 -1
  71. package/lib/memory-reflection.js +80 -19
  72. package/lib/memory-reflection.js.map +1 -1
  73. package/lib/memory-store.d.ts +13 -1
  74. package/lib/memory-store.d.ts.map +1 -1
  75. package/lib/memory-store.js +182 -8
  76. package/lib/memory-store.js.map +1 -1
  77. package/lib/profile-domain.d.ts +7 -0
  78. package/lib/profile-domain.d.ts.map +1 -0
  79. package/lib/profile-domain.js +56 -0
  80. package/lib/profile-domain.js.map +1 -0
  81. package/lib/store.d.ts.map +1 -1
  82. package/lib/store.js +39 -3
  83. package/lib/store.js.map +1 -1
  84. package/lib/time-format.d.ts +2 -0
  85. package/lib/time-format.d.ts.map +1 -0
  86. package/lib/time-format.js +20 -0
  87. package/lib/time-format.js.map +1 -0
  88. package/package.json +3 -1
@@ -0,0 +1,138 @@
1
+ export const REFLECTION_MEMORY_CHAR_BUDGET = 6_000;
2
+ export const REFLECTION_CONCERN_CHAR_BUDGET = 3_500;
3
+ export const DAILY_TURN_CHAR_BUDGET = 14_000;
4
+ export const DAILY_MEMORY_CHAR_BUDGET = 8_000;
5
+ export const DAILY_RELATION_CHAR_BUDGET = 4_000;
6
+ export const DAILY_CONCERN_CHAR_BUDGET = 3_500;
7
+ export function reflectionPromptInput(date, turn, memories, diary, concerns) {
8
+ return JSON.stringify({
9
+ date,
10
+ existingDailyReflection: diary === undefined ? null : compactReflection(diary),
11
+ existingRelevantMemories: compactMemories(memories, 16, REFLECTION_MEMORY_CHAR_BUDGET),
12
+ existingConcerns: compactConcerns(concerns, 12, REFLECTION_CONCERN_CHAR_BUDGET),
13
+ newTurn: compactTurn(turn, 6_000, 2_500),
14
+ });
15
+ }
16
+ export function dailyReviewPromptInput(date, context, concerns) {
17
+ return JSON.stringify({
18
+ date,
19
+ reflection: compactReflection(context.reflection),
20
+ currentMemories: compactMemories([...context.memories].sort((left, right) => right.updatedAt - left.updatedAt), 24, DAILY_MEMORY_CHAR_BUDGET),
21
+ existingRelations: compactRelations(context.existingRelations, 40, DAILY_RELATION_CHAR_BUDGET),
22
+ turns: compactTurns(context.turns, DAILY_TURN_CHAR_BUDGET),
23
+ existingConcerns: compactConcerns(concerns, 20, DAILY_CONCERN_CHAR_BUDGET),
24
+ contextPolicy: '上下文经过无损索引和有界文本压缩;所有轮次均保留。未列出的旧记忆与旧关系由存储层继续保留。',
25
+ });
26
+ }
27
+ export function compactMemories(memories, limit, charBudget) {
28
+ const selected = memories.slice(0, limit);
29
+ return fitEntries(selected, charBudget, (memory, entryBudget) => {
30
+ const latest = memory.evidence.at(-1);
31
+ const base = {
32
+ id: memory.id,
33
+ kind: memory.kind,
34
+ subject: clip(memory.subject, 120),
35
+ confidence: precision(memory.confidence),
36
+ importance: precision(memory.importance),
37
+ evidenceCount: memory.evidence.length,
38
+ ...(memory.locked ? { locked: true } : {}),
39
+ };
40
+ return fitTextFields(base, entryBudget, [
41
+ ['content', memory.content, .82],
42
+ ...(latest === undefined ? [] : [['latestEvidence', latest.excerpt, .18]]),
43
+ ]);
44
+ });
45
+ }
46
+ export function compactTurns(turns, charBudget) {
47
+ // A small per-turn floor keeps both speakers represented. The budget only grows
48
+ // beyond its target on exceptionally dense days where dropping a turn would be
49
+ // a larger semantic regression than retaining a minimal index of it.
50
+ const minimumTurnBudget = 48;
51
+ const completeTurnBudget = Math.max(charBudget, turns.length * minimumTurnBudget + turns.length + 1);
52
+ return fitEntries(turns, completeTurnBudget, (turn, entryBudget) => {
53
+ const base = { at: turn.at };
54
+ if (turn.concernDirective !== undefined)
55
+ base.concernDirective = {
56
+ action: turn.concernDirective.action,
57
+ subject: clip(turn.concernDirective.subject, 100),
58
+ };
59
+ return fitTextFields(base, entryBudget, [['user', turn.user, .64], ['assistant', turn.assistant, .36]]);
60
+ }, minimumTurnBudget);
61
+ }
62
+ function compactTurn(turn, userLimit, assistantLimit) {
63
+ return {
64
+ id: turn.id,
65
+ at: turn.at,
66
+ user: clip(turn.user, userLimit),
67
+ assistant: clip(turn.assistant, assistantLimit),
68
+ ...(turn.concernDirective === undefined ? {} : { concernDirective: turn.concernDirective }),
69
+ };
70
+ }
71
+ function compactReflection(reflection) {
72
+ return {
73
+ date: reflection.date,
74
+ summary: clip(reflection.summary, 800),
75
+ events: compactStrings(reflection.events, 12, 100),
76
+ openTasks: compactStrings(reflection.openTasks, 20, 100),
77
+ completedTasks: compactStrings(reflection.completedTasks, 12, 100),
78
+ learnings: compactStrings(reflection.learnings, 12, 100),
79
+ turnCount: reflection.turnCount,
80
+ };
81
+ }
82
+ function compactConcerns(concerns, limit, charBudget) {
83
+ return fitEntries(concerns.slice(0, limit), charBudget, (concern, entryBudget) => fitTextFields({
84
+ id: concern.id,
85
+ origin: concern.origin,
86
+ state: concern.state,
87
+ priority: precision(concern.priority),
88
+ watchKind: concern.watchKind,
89
+ }, entryBudget, [['subject', concern.subject, .34], ['reason', concern.reason, .42], ['watchQuery', concern.watchQuery, .24]]));
90
+ }
91
+ function compactRelations(relations, limit, charBudget) {
92
+ return fitEntries(relations.slice(0, limit), charBudget, (relation, entryBudget) => fitTextFields({
93
+ id: relation.id,
94
+ sourceSubject: clip(relation.sourceSubject, 120),
95
+ sourceKind: relation.sourceKind,
96
+ targetSubject: clip(relation.targetSubject, 120),
97
+ targetKind: relation.targetKind,
98
+ kind: relation.kind,
99
+ confidence: precision(relation.confidence),
100
+ }, entryBudget, [['label', relation.label, 1]]));
101
+ }
102
+ function fitEntries(items, charBudget, project, minimumEntryBudget = 180) {
103
+ if (items.length === 0)
104
+ return [];
105
+ const maximumCount = Math.max(1, Math.floor((charBudget - 1) / (minimumEntryBudget + 1)));
106
+ const selected = items.slice(0, maximumCount);
107
+ const entryBudget = Math.max(minimumEntryBudget, Math.floor((charBudget - selected.length - 1) / selected.length));
108
+ return selected.map(item => project(item, entryBudget));
109
+ }
110
+ function fitTextFields(base, entryBudget, fields) {
111
+ const overhead = JSON.stringify(base).length + fields.reduce((sum, [name]) => sum + name.length + 6, 0);
112
+ const available = Math.max(fields.length * 12, entryBudget - overhead);
113
+ const totalWeight = fields.reduce((sum, field) => sum + field[2], 0) || 1;
114
+ const result = { ...base };
115
+ for (const [name, value, weight] of fields)
116
+ result[name] = clip(value, Math.max(12, Math.floor(available * weight / totalWeight)));
117
+ const excess = JSON.stringify(result).length - entryBudget;
118
+ if (excess > 0 && fields.length > 0) {
119
+ const [name] = fields[0];
120
+ result[name] = clip(String(result[name] ?? ''), Math.max(12, String(result[name] ?? '').length - excess));
121
+ }
122
+ return result;
123
+ }
124
+ function compactStrings(values, limit, maxLength) {
125
+ return values.slice(0, limit).map(value => clip(value, maxLength)).filter(Boolean);
126
+ }
127
+ function clip(value, maximum) {
128
+ const text = value.replace(/\s+/g, ' ').trim();
129
+ if (text.length <= maximum)
130
+ return text;
131
+ if (maximum < 16)
132
+ return text.slice(0, maximum);
133
+ const remaining = maximum - 1;
134
+ const head = Math.ceil(remaining * .7);
135
+ return `${text.slice(0, head)}…${text.slice(-(remaining - head))}`;
136
+ }
137
+ function precision(value) { return Math.round(value * 1_000) / 1_000; }
138
+ //# sourceMappingURL=memory-prompt-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-prompt-context.js","sourceRoot":"","sources":["../src/memory-prompt-context.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  import type { Context } from '@deepseek-ai/cordis';
2
2
  import type { AgentDefaultModelConfig } from '@deepseek-ai/dsh-agent-default-model';
3
3
  import type { Companion } from './domain.js';
4
+ import { type ConcernCandidate, type PartnerConcern } from './concern-domain.js';
4
5
  import type { ConversationTurn, DailyReviewResult, DailyReviewTarget, ReflectionResult } from './memory-domain.js';
5
6
  import type { PartnerMemoryStore } from './memory-store.js';
7
+ import type { PartnerConcernStore } from './concern-store.js';
6
8
  type ReflectionContext = Context & {
7
9
  llm: Context['llm'];
8
10
  agentDefaultModel: AgentDefaultModelConfig;
@@ -10,12 +12,15 @@ type ReflectionContext = Context & {
10
12
  export declare class MemoryReflectionService {
11
13
  private readonly ctx;
12
14
  private readonly store;
15
+ private readonly concerns;
13
16
  private readonly queues;
14
- constructor(ctx: ReflectionContext, store: PartnerMemoryStore);
15
- reflect(companion: Companion, turn: ConversationTurn): Promise<void>;
16
- reviewDay(companion: Companion, target: DailyReviewTarget): Promise<void>;
17
+ constructor(ctx: ReflectionContext, store: PartnerMemoryStore, concerns: PartnerConcernStore);
18
+ reflect(companion: Companion, turn: ConversationTurn): Promise<PartnerConcern[]>;
19
+ reviewDay(companion: Companion, target: DailyReviewTarget): Promise<PartnerConcern[]>;
17
20
  private run;
18
21
  }
22
+ export declare function protectConcernDirective(candidates: ConcernCandidate[], directive: ConversationTurn['concernDirective']): ConcernCandidate[];
23
+ export declare function explicitConcernDirective(value: string): boolean;
19
24
  export declare function parseReflection(raw: string): ReflectionResult;
20
25
  export declare function parseDailyReview(raw: string): DailyReviewResult;
21
26
  export {};
@@ -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,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAmD,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACnK,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAE3D,KAAK,iBAAiB,GAAG,OAAO,GAAG;IAAE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAAC,iBAAiB,EAAE,uBAAuB,CAAA;CAAE,CAAA;AAEtG,qBAAa,uBAAuB;IAEtB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAqB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAD3E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;gBAC7B,GAAG,EAAE,iBAAiB,EAAmB,KAAK,EAAE,kBAAkB;IAEzF,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpE,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;YAmBjE,GAAG;CAwBlB;AA6BD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAa7D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAY/D"}
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;AAI7D,KAAK,iBAAiB,GAAG,OAAO,GAAG;IAAE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAAC,iBAAiB,EAAE,uBAAuB,CAAA;CAAE,CAAA;AAEtG,qBAAa,uBAAuB;IAEtB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAqB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAsB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAD1H,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;gBACzC,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;IAQhF,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;YAyB7E,GAAG;CAmClB;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,CAM/D;AA6BD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAiB7D;AAiBD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAe/D"}
@@ -1,19 +1,24 @@
1
1
  import { createUserMessage } from '@deepseek-ai/dsh-llm';
2
+ import { concernSubjectSimilarity, extractConcernResources } from './concern-domain.js';
3
+ import { canonicalProfileSubject } from './profile-domain.js';
4
+ import { dailyReviewPromptInput, reflectionPromptInput } from './memory-prompt-context.js';
2
5
  export class MemoryReflectionService {
3
6
  ctx;
4
7
  store;
8
+ concerns;
5
9
  queues = new Map();
6
- constructor(ctx, store) {
10
+ constructor(ctx, store, concerns) {
7
11
  this.ctx = ctx;
8
12
  this.store = store;
13
+ this.concerns = concerns;
9
14
  }
10
15
  async reflect(companion, turn) {
11
16
  const key = `${companion.id}:${turn.scopeId}`;
12
- const previous = this.queues.get(key) ?? Promise.resolve();
17
+ const previous = this.queues.get(key) ?? Promise.resolve([]);
13
18
  const current = previous.catch(() => { }).then(() => this.run(companion, turn));
14
19
  this.queues.set(key, current);
15
20
  try {
16
- await current;
21
+ return await current;
17
22
  }
18
23
  finally {
19
24
  if (this.queues.get(key) === current)
@@ -22,6 +27,7 @@ export class MemoryReflectionService {
22
27
  }
23
28
  async reviewDay(companion, target) {
24
29
  const context = await this.store.dailyReviewContext(target);
30
+ const concerns = await this.concerns.list(companion.id, target.scopeId, false, 40);
25
31
  const selection = modelSelection(this.ctx, companion);
26
32
  const controller = new AbortController();
27
33
  const timeout = setTimeout(() => controller.abort(), 90_000);
@@ -29,7 +35,7 @@ export class MemoryReflectionService {
29
35
  try {
30
36
  for await (const chunk of this.ctx.llm.stream({
31
37
  ...selection,
32
- messages: [createUserMessage({ content: [{ type: 'text', text: JSON.stringify({ date: target.date, ...context }) }], source: { kind: 'plugin', plugin: '@lemoncat7/dsh-partner', form: 'notice', summary: '伙伴每日记忆终审' } })],
38
+ messages: [createUserMessage({ content: [{ type: 'text', text: dailyReviewPromptInput(target.date, context, concerns) }], source: { kind: 'plugin', plugin: '@lemoncat7/dsh-partner', form: 'notice', summary: '伙伴每日记忆终审' } })],
33
39
  system: DAILY_REVIEW_SYSTEM, temperature: 0.05, maxTokens: 3000, signal: controller.signal,
34
40
  })) {
35
41
  if (chunk.type === 'text-delta')
@@ -41,12 +47,18 @@ export class MemoryReflectionService {
41
47
  finally {
42
48
  clearTimeout(timeout);
43
49
  }
44
- await this.store.completeDailyReview(target, parseDailyReview(output));
50
+ const result = parseDailyReview(output);
51
+ await this.store.completeDailyReview(target, result);
52
+ return this.concerns.applyCandidates(companion.id, target.scopeId, result.concerns, 'implicit', Date.now(), {
53
+ source: 'daily_review',
54
+ evidence: `每日终审 ${target.date}`,
55
+ });
45
56
  }
46
57
  async run(companion, turn) {
47
58
  await this.store.archive(turn);
48
59
  const existing = await this.store.recall(companion.id, turn.scopeId, turn.user, 16);
49
60
  const diaries = await this.store.recentReflectionsForScope(companion.id, turn.scopeId, 1);
61
+ const concerns = await this.concerns.list(companion.id, turn.scopeId, false, 40);
50
62
  const selection = modelSelection(this.ctx, companion);
51
63
  const controller = new AbortController();
52
64
  const timeout = setTimeout(() => controller.abort(), 60_000);
@@ -54,7 +66,7 @@ export class MemoryReflectionService {
54
66
  try {
55
67
  for await (const chunk of this.ctx.llm.stream({
56
68
  ...selection,
57
- messages: [createUserMessage({ content: [{ type: 'text', text: reflectionInput(this.store.day(turn.at), turn, existing, diaries.find(item => item.date === this.store.day(turn.at))) }], source: { kind: 'plugin', plugin: '@lemoncat7/dsh-partner', form: 'notice', summary: '伙伴记忆提炼' } })],
69
+ messages: [createUserMessage({ content: [{ type: 'text', text: reflectionPromptInput(this.store.day(turn.at), turn, existing, diaries.find(item => item.date === this.store.day(turn.at)), concerns) }], source: { kind: 'plugin', plugin: '@lemoncat7/dsh-partner', form: 'notice', summary: '伙伴记忆提炼' } })],
58
70
  system: REFLECTION_SYSTEM,
59
71
  temperature: 0.1,
60
72
  maxTokens: 1800,
@@ -69,10 +81,34 @@ export class MemoryReflectionService {
69
81
  finally {
70
82
  clearTimeout(timeout);
71
83
  }
72
- await this.store.consolidate(turn, parseReflection(output));
84
+ const result = parseReflection(output);
85
+ await this.store.consolidate(turn, result);
86
+ const resources = extractConcernResources(turn.user);
87
+ const reflected = protectConcernDirective(result.concerns, turn.concernDirective);
88
+ const candidates = resources.length === 0 ? reflected : reflected.map(item => item.operation === 'upsert' ? { ...item, resources } : item);
89
+ const origin = explicitConcernDirective(turn.user) ? 'explicit' : 'implicit';
90
+ const created = await this.concerns.applyCandidates(companion.id, turn.scopeId, candidates, origin, turn.at, {
91
+ source: 'reflection', sessionId: turn.sessionId, evidence: turn.user,
92
+ });
93
+ if (turn.concernDirective !== undefined)
94
+ await this.concerns.act(companion.id, turn.concernDirective.concernId, turn.concernDirective.action, turn.at);
73
95
  await this.store.prune(companion.id, companion.automation.memory.retentionDays);
96
+ return origin === 'implicit' ? created : [];
74
97
  }
75
98
  }
99
+ export function protectConcernDirective(candidates, directive) {
100
+ return directive === undefined
101
+ ? candidates
102
+ : candidates.filter(item => item.operation !== 'upsert' || concernSubjectSimilarity(item.subject, directive.subject) < .74);
103
+ }
104
+ export function explicitConcernDirective(value) {
105
+ const text = value.normalize('NFKC').toLocaleLowerCase('zh-CN');
106
+ if (/(?:不要|不用|无需|别|取消|停止).{0,12}(?:关注|留意|盯着|跟进|惦记|记着)/u.test(text))
107
+ return false;
108
+ return /(?:请|麻烦|帮我|替我|让(?:伙伴|你)?).{0,24}(?:关注|留意|盯着|跟进|惦记|记着)/u.test(text)
109
+ || /(?:关注|留意|盯着|跟进|惦记).{0,24}(?:一下|这件事|这个|这些)/u.test(text)
110
+ || /(?:keep\s+an?\s+eye\s+on|watch|track|follow).{0,80}(?:for\s+me|this|these)/iu.test(text);
111
+ }
76
112
  function modelSelection(ctx, companion) {
77
113
  return {
78
114
  ...ctx.agentDefaultModel.currentSelection(),
@@ -83,19 +119,20 @@ function modelSelection(ctx, companion) {
83
119
  }
84
120
  const REFLECTION_SYSTEM = `你是长期伙伴的记忆整理器。你不回答用户,只从有证据的对话中维护每日回顾和结构化记忆。
85
121
  只输出一个 JSON 对象,不要 Markdown。格式:
86
- {"daily":{"summary":"当天截至当前的简洁总结","events":[],"openTasks":[],"completedTasks":[],"learnings":[]},"memories":[{"kind":"profile|preference|task|event|relationship|emotion","subject":"稳定且简短的索引主题","content":"带场景边界的准确内容","confidence":0.0,"importance":0.0,"operation":"upsert|complete|remove","expiresInDays":3}]}
122
+ {"daily":{"summary":"当天截至当前的简洁总结","events":[],"openTasks":[],"completedTasks":[],"learnings":[]},"memories":[{"kind":"profile|preference|task|event|relationship|emotion","subject":"稳定且简短的索引主题","content":"带场景边界的准确内容","confidence":0.0,"importance":0.0,"operation":"upsert|complete|remove","expiresInDays":3}],"concerns":[{"subject":"尚未闭环的具体事情","reason":"为什么伙伴应该继续惦记","operation":"upsert|resolve|dismiss","priority":0.0,"confidence":0.0,"watchKind":"auto|knowledge|workspace|web","watchQuery":"用于观察变化的具体对象或问题"}]}
87
123
  规则:
88
124
  1. 不把寒暄、模型猜测、助手自述当成用户事实;没有长期价值时 memories 返回空数组。
89
125
  2. 偏好必须保留适用场景和例外;任务只记录用户明确提出或双方明确承诺的事项。
90
126
  3. emotion 只是短期信号,必须设置 1-7 天过期,不做心理诊断。
91
- 4. 与已有记忆同主题时沿用 subject;用户纠正旧理解时用 upsert 更新,撤销时 remove,任务完成时 complete。
92
- 5. daily 应综合已有当日日记与新对话,不能只复述最后一句。数组每类最多 20 条,记忆候选最多 12 条。`;
93
- const DAILY_REVIEW_SYSTEM = `你是长期伙伴的每日记忆终审器。根据当天完整对话、滚动回顾和已有记忆,输出一次最终整理,不回答用户。
94
- 只输出 JSON:{"daily":{"summary":"","events":[],"openTasks":[],"completedTasks":[],"learnings":[]},"memories":[与逐轮提炼相同的候选格式],"relations":[{"sourceSubject":"必须等于已有或候选记忆主题","targetSubject":"必须等于已有或候选记忆主题","kind":"supports|depends_on|about|conflicts_with|follows","label":"简短关系说明","confidence":0.0}]}
95
- 要求:合并重复理解;以完整对话纠正逐轮偏差;明确任务完成状态;不创造对话中没有的事实;关系必须有证据且最多 80 条;无可靠关系时返回空数组。`;
96
- function reflectionInput(date, turn, memories, diary) {
97
- return JSON.stringify({ date, existingDailyReflection: diary ?? null, existingRelevantMemories: memories, newTurn: { id: turn.id, user: turn.user, assistant: turn.assistant } });
98
- }
127
+ 4. profile 表示伙伴从用户明确陈述中形成的长期人物理解,只能使用“基本身份、工作背景、长期职责、常用环境、长期目标”五个 subject。普通喜好归 preference,临时任务、情绪和事件不得写入画像。
128
+ 5. 不根据语气或单次行为推断职业、性格、健康、财务、政治、宗教、亲密关系等敏感或隐私事实。profile 必须有明确用户证据;不确定时不要输出。建议 confidence 至少 0.72、importance 至少 0.55。
129
+ 6. 与已有记忆同主题时沿用 subject;用户纠正旧理解时用 upsert 替换,撤销时 remove,任务完成时 complete。不得用相近措辞创建第二条同槽位画像。
130
+ 7. concerns 只表示尚未闭环且值得伙伴继续惦记的具体事情,例如持续未解决、临时方案、等待外部结果、反复不满意或用户明确要求留意;长期身份、普通偏好、宽泛兴趣和已经完成的事项不能成为挂念。
131
+ 8. 用户说“继续留意、很重要、已经解决、不用管了”时,应对同一 subject 分别 upsert、提高 priority、resolve 或 dismiss。watchKind 按变化来源选择,不能把本地项目问题默认标为 web。
132
+ 9. daily 应综合已有当日日记与新对话,不能只复述最后一句。数组每类最多 20 条,记忆候选最多 12 条。`;
133
+ const DAILY_REVIEW_SYSTEM = `你是长期伙伴的每日记忆终审器。根据当天每一轮对话的双向代表片段、滚动回顾和已有记忆,输出一次最终整理,不回答用户。
134
+ 只输出 JSON:{"daily":{"summary":"","events":[],"openTasks":[],"completedTasks":[],"learnings":[]},"memories":[与逐轮提炼相同的候选格式],"concerns":[与逐轮提炼相同的挂念格式],"relations":[{"sourceSubject":"必须等于已有或候选记忆主题","sourceKind":"profile|preference|task|event|relationship|emotion","targetSubject":"必须等于已有或候选记忆主题","targetKind":"同上","kind":"supports|depends_on|about|conflicts_with|follows","label":"有证据的简短关系说明","confidence":0.0,"operation":"upsert|remove"}]}
135
+ 要求:合并重复理解;人物画像只使用“基本身份、工作背景、长期职责、常用环境、长期目标”五个稳定槽位,并遵守逐轮提炼中的画像证据与隐私规则;结合所有轮次片段纠正逐轮偏差,对被压缩而证据不足的细节保持原状而非猜测;明确任务完成状态;复核并关闭已经完成或失效的挂念;不创造对话中没有的事实;relations 只输出需要新增、更新或明确移除的关系,已有且仍成立的关系无需重复;关系两端必须填写准确 kind,upsert 必须有对话证据且 confidence 至少 0.62;remove 用于已有关系已被纠正或失效;conflicts_with 只用于无法同时为真的明确矛盾,不能把普通差异标成冲突;关系最多 80 条;无变化时 relations 返回空数组。`;
99
136
  export function parseReflection(raw) {
100
137
  const match = raw.trim().match(/\{[\s\S]*\}/);
101
138
  if (!match)
@@ -103,14 +140,33 @@ export function parseReflection(raw) {
103
140
  const value = JSON.parse(match[0]);
104
141
  const daily = record(value.daily);
105
142
  const memories = Array.isArray(value.memories) ? value.memories.map(parseCandidate).filter((item) => item !== undefined).slice(0, 12) : [];
143
+ const concerns = Array.isArray(value.concerns)
144
+ ? value.concerns.map(parseConcern).filter((item) => item !== undefined)
145
+ : [];
106
146
  return {
107
147
  daily: {
108
148
  summary: string(daily.summary, 1200), events: stringArray(daily.events), openTasks: stringArray(daily.openTasks),
109
149
  completedTasks: stringArray(daily.completedTasks), learnings: stringArray(daily.learnings),
110
150
  },
111
151
  memories,
152
+ concerns,
153
+ };
154
+ }
155
+ function parseConcern(value) {
156
+ const item = record(value);
157
+ if (item.operation !== 'upsert' && item.operation !== 'resolve' && item.operation !== 'dismiss')
158
+ return undefined;
159
+ const subject = string(item.subject, 300);
160
+ const watchKind = item.watchKind;
161
+ if (!subject || !isWatchKind(watchKind))
162
+ return undefined;
163
+ return {
164
+ subject, reason: string(item.reason, 800), operation: item.operation,
165
+ priority: number(item.priority), confidence: number(item.confidence), watchKind,
166
+ watchQuery: string(item.watchQuery, 500) || subject,
112
167
  };
113
168
  }
169
+ function isWatchKind(value) { return value === 'auto' || value === 'knowledge' || value === 'workspace' || value === 'web'; }
114
170
  export function parseDailyReview(raw) {
115
171
  const base = parseReflection(raw);
116
172
  const match = raw.trim().match(/\{[\s\S]*\}/);
@@ -122,9 +178,13 @@ export function parseDailyReview(raw) {
122
178
  return [];
123
179
  const sourceSubject = string(relation.sourceSubject, 120);
124
180
  const targetSubject = string(relation.targetSubject, 120);
125
- if (!sourceSubject || !targetSubject)
181
+ const label = string(relation.label, 120);
182
+ const operation = relation.operation === 'remove' ? 'remove' : 'upsert';
183
+ if (!sourceSubject || !targetSubject || (operation === 'upsert' && !label))
126
184
  return [];
127
- return [{ sourceSubject, targetSubject, kind, label: string(relation.label, 120), confidence: number(relation.confidence) }];
185
+ const sourceKind = isKind(relation.sourceKind) ? relation.sourceKind : undefined;
186
+ const targetKind = isKind(relation.targetKind) ? relation.targetKind : undefined;
187
+ return [{ sourceSubject, ...(sourceKind ? { sourceKind } : {}), targetSubject, ...(targetKind ? { targetKind } : {}), kind, label, confidence: number(relation.confidence), operation }];
128
188
  }).slice(0, 80) : [];
129
189
  return { ...base, relations };
130
190
  }
@@ -135,7 +195,8 @@ function parseCandidate(value) {
135
195
  const operation = item.operation;
136
196
  if (!isKind(kind) || (operation !== 'upsert' && operation !== 'complete' && operation !== 'remove'))
137
197
  return undefined;
138
- const subject = string(item.subject, 120);
198
+ const rawSubject = string(item.subject, 120);
199
+ const subject = kind === 'profile' ? canonicalProfileSubject(rawSubject) : rawSubject;
139
200
  const content = string(item.content, 800);
140
201
  if (!subject || (operation === 'upsert' && !content))
141
202
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"memory-reflection.js","sourceRoot":"","sources":["../src/memory-reflection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-reflection.js","sourceRoot":"","sources":["../src/memory-reflection.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAqE,MAAM,qBAAqB,CAAA;AAI1J,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAI1F,MAAM,OAAO,uBAAuB;IAEL;IAAyC;IAA4C;IADjG,MAAM,GAAG,IAAI,GAAG,EAAqC,CAAA;IACtE,YAA6B,GAAsB,EAAmB,KAAyB,EAAmB,QAA6B;QAAlH,QAAG,GAAH,GAAG,CAAmB;QAAmB,UAAK,GAAL,KAAK,CAAoB;QAAmB,aAAQ,GAAR,QAAQ,CAAqB;IAAG,CAAC;IAEnJ,KAAK,CAAC,OAAO,CAAC,SAAoB,EAAE,IAAsB;QACxD,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAA;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC5D,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAA;QAC9E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAC7B,IAAI,CAAC;YAAC,OAAO,MAAM,OAAO,CAAA;QAAC,CAAC;gBAAS,CAAC;YAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,OAAO;gBAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAAC,CAAC;IACxG,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAoB,EAAE,MAAyB;QAC7D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;QAC3D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;QAClF,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QACrD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAA;QAC5D,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC5C,GAAG,SAAS;gBACZ,QAAQ,EAAE,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,wBAAwB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;gBAC/N,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM;aAC3F,CAAC,EAAE,CAAC;gBACH,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;oBAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAA;gBACrD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;YAC3H,CAAC;QACH,CAAC;gBAAS,CAAC;YAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QAAC,CAAC;QACnC,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;QACvC,MAAM,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACpD,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;YAC1G,MAAM,EAAE,cAAc;YACtB,QAAQ,EAAE,QAAQ,MAAM,CAAC,IAAI,EAAE;SAChC,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,GAAG,CAAC,SAAoB,EAAE,IAAsB;QAC5D,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QACnF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QACzF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;QAChF,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QACrD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAA;QAC5D,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC5C,GAAG,SAAS;gBACZ,QAAQ,EAAE,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,wBAAwB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAC5S,MAAM,EAAE,iBAAiB;gBACzB,WAAW,EAAE,GAAG;gBAChB,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,EAAE,CAAC;gBACH,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;oBAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAA;gBACrD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;YAChI,CAAC;QACH,CAAC;gBAAS,CAAC;YAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QAAC,CAAC;QACnC,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;QACtC,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC1C,MAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpD,MAAM,SAAS,GAAG,uBAAuB,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAA;QACjF,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC1I,MAAM,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAA;QAC5E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;YAC3G,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI;SACrE,CAAC,CAAA;QACF,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS;YAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;QACtJ,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QAC/E,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7C,CAAC;CACF;AAED,MAAM,UAAU,uBAAuB,CACrC,UAA8B,EAC9B,SAA+C;IAE/C,OAAO,SAAS,KAAK,SAAS;QAC5B,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,wBAAwB,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAA;AAC/H,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAC/D,IAAI,mDAAmD,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IAChF,OAAO,wDAAwD,CAAC,IAAI,CAAC,IAAI,CAAC;WACrE,4CAA4C,CAAC,IAAI,CAAC,IAAI,CAAC;WACvD,8EAA8E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAChG,CAAC;AAED,SAAS,cAAc,CAAC,GAAsB,EAAE,SAAoB;IAClE,OAAO;QACL,GAAG,GAAG,CAAC,iBAAiB,CAAC,gBAAgB,EAAE;QAC3C,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvH,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnG,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3F,CAAA;AACH,CAAC;AAED,MAAM,iBAAiB,GAAG;;;;;;;;;;;;0DAYgC,CAAA;AAE1D,MAAM,mBAAmB,GAAG;;2UAE+S,CAAA;AAE3U,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IAC7C,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;IACxE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAA4B,CAAA;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAA2B,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACnK,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC5C,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAA4B,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC;QACjG,CAAC,CAAC,EAAE,CAAA;IACN,OAAO;QACL,KAAK,EAAE;YACL,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC;YAChH,cAAc,EAAE,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC;SAC3F;QACD,QAAQ;QACR,QAAQ;KACT,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAC1B,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACjH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;IAChC,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAA;IACzD,OAAO;QACL,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS;QACpE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,SAAS;QAC/E,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,OAAO;KACpD,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,IAA+B,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,KAAK,CAAA,CAAC,CAAC;AAEhK,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;IACjC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAA4B,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1E,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAChF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAAC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;QACzD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAA;QACpC,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAAC,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAAC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAC/J,MAAM,SAAS,GAAwB,QAAQ,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;QAC5F,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAA;QACrF,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAA;QAChF,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAA;QAChF,OAAO,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;IAC1L,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACpB,OAAO,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAA;AAC/B,CAAC;AAED,SAAS,cAAc,CAAC,KAAc,IAAiC,OAAO,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,gBAAgB,IAAI,KAAK,KAAK,SAAS,CAAA,CAAC,CAAC;AAExM,SAAS,cAAc,CAAC,KAAc;IACpC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;IACtB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;IAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,UAAU,IAAI,SAAS,KAAK,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAA;IACrH,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAC5C,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;IACrF,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IACzC,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAA;IACtE,MAAM,SAAS,GAAoB;QACjC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO;QACjC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;KACzE,CAAA;IACD,IAAI,IAAI,KAAK,SAAS;QAAE,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;SAChH,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC;QAAE,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAA;IACnJ,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,MAAM,CAAC,KAAc,IAAyB,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,cAAc,IAAI,KAAK,KAAK,SAAS,CAAA,CAAC,CAAC;AACzM,SAAS,MAAM,CAAC,KAAc,IAA6B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAgC,CAAC,CAAC,CAAC,EAAE,CAAA,CAAC,CAAC;AAChL,SAAS,MAAM,CAAC,KAAc,EAAE,GAAW,IAAY,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAC,CAAC;AACnK,SAAS,WAAW,CAAC,KAAc,IAAc,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA,CAAC,CAAC;AACrK,SAAS,MAAM,CAAC,KAAc,IAAY,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA,CAAC,CAAC;AAC9I,SAAS,MAAM,CAAC,KAAc,EAAE,QAAgB,IAAY,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAA,CAAC,CAAC"}
@@ -1,8 +1,14 @@
1
- import type { ConversationTurn, DailyReflection, DailyReviewResult, DailyReviewTarget, MemoryCandidate, MemoryRelation, PartnerMemory } from './memory-domain.js';
1
+ import type { ConversationTurn, DailyReflection, DailyReviewResult, DailyReviewTarget, MemoryCandidate, MemoryRecallContext, MemoryRelation, MemoryRelationReviewContext, PartnerMemory, UserProfileSnapshot } from './memory-domain.js';
2
2
  type ReflectionResultLike = {
3
3
  daily: Omit<DailyReflection, 'date' | 'companionId' | 'scopeId' | 'updatedAt' | 'turnCount'>;
4
4
  memories: MemoryCandidate[];
5
5
  };
6
+ export interface LegacyHeartbeatFocus {
7
+ scopeId: string;
8
+ subject: string;
9
+ reason: string;
10
+ confidence: number;
11
+ }
6
12
  export declare class PartnerMemoryStore {
7
13
  private readonly root;
8
14
  private readonly timeZone;
@@ -12,7 +18,12 @@ export declare class PartnerMemoryStore {
12
18
  archive(turn: ConversationTurn): Promise<void>;
13
19
  consolidate(turn: ConversationTurn, result: ReflectionResultLike): Promise<void>;
14
20
  recall(companionId: string, scopeId: string, query: string, limit?: number): Promise<PartnerMemory[]>;
21
+ recallContext(companionId: string, scopeId: string, query: string, limit?: number): Promise<MemoryRecallContext>;
22
+ profileSnapshot(companionId: string, scopeId: string): Promise<UserProfileSnapshot>;
23
+ profileSnapshots(companionId: string, knownScopeIds?: string[]): Promise<UserProfileSnapshot[]>;
15
24
  recentMemories(companionId: string, limit?: number): Promise<PartnerMemory[]>;
25
+ legacyHeartbeatFocuses(companionId: string): Promise<LegacyHeartbeatFocus[]>;
26
+ dropLegacyHeartbeatFocuses(companionId: string): Promise<void>;
16
27
  updateMemory(companionId: string, memoryId: string, subject: string, content: string): Promise<PartnerMemory>;
17
28
  deleteMemory(companionId: string, memoryId: string): Promise<void>;
18
29
  recentReflections(companionId: string, limit?: number): Promise<DailyReflection[]>;
@@ -21,6 +32,7 @@ export declare class PartnerMemoryStore {
21
32
  dailyReviewContext(target: DailyReviewTarget): Promise<{
22
33
  reflection: DailyReflection;
23
34
  memories: PartnerMemory[];
35
+ existingRelations: MemoryRelationReviewContext[];
24
36
  turns: ConversationTurn[];
25
37
  }>;
26
38
  completeDailyReview(target: DailyReviewTarget, result: DailyReviewResult): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../src/memory-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../src/memory-store.ts"],"names":[],"mappings":"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"}