@thread-memory/core 1.0.1 → 1.0.3

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 (55) hide show
  1. package/package.json +2 -2
  2. package/dist/assets.test.d.ts +0 -1
  3. package/dist/assets.test.js +0 -88
  4. package/dist/assets.test.js.map +0 -1
  5. package/dist/events.test.d.ts +0 -1
  6. package/dist/events.test.js +0 -46
  7. package/dist/events.test.js.map +0 -1
  8. package/dist/feedback-guard.test.d.ts +0 -1
  9. package/dist/feedback-guard.test.js +0 -67
  10. package/dist/feedback-guard.test.js.map +0 -1
  11. package/dist/index.test.d.ts +0 -1
  12. package/dist/index.test.js +0 -8
  13. package/dist/index.test.js.map +0 -1
  14. package/dist/isolation.test.d.ts +0 -1
  15. package/dist/isolation.test.js +0 -100
  16. package/dist/isolation.test.js.map +0 -1
  17. package/dist/light-confirm.test.d.ts +0 -1
  18. package/dist/light-confirm.test.js +0 -236
  19. package/dist/light-confirm.test.js.map +0 -1
  20. package/dist/lineage.test.d.ts +0 -1
  21. package/dist/lineage.test.js +0 -56
  22. package/dist/lineage.test.js.map +0 -1
  23. package/dist/migrate.test.d.ts +0 -1
  24. package/dist/migrate.test.js +0 -111
  25. package/dist/migrate.test.js.map +0 -1
  26. package/dist/nav.test.d.ts +0 -1
  27. package/dist/nav.test.js +0 -100
  28. package/dist/nav.test.js.map +0 -1
  29. package/dist/project-key.test.d.ts +0 -1
  30. package/dist/project-key.test.js +0 -29
  31. package/dist/project-key.test.js.map +0 -1
  32. package/dist/query.test.d.ts +0 -1
  33. package/dist/query.test.js +0 -165
  34. package/dist/query.test.js.map +0 -1
  35. package/dist/schema.test.d.ts +0 -1
  36. package/dist/schema.test.js +0 -167
  37. package/dist/schema.test.js.map +0 -1
  38. package/dist/sediment.test.d.ts +0 -1
  39. package/dist/sediment.test.js +0 -89
  40. package/dist/sediment.test.js.map +0 -1
  41. package/dist/segment.test.d.ts +0 -1
  42. package/dist/segment.test.js +0 -37
  43. package/dist/segment.test.js.map +0 -1
  44. package/dist/state-delta.test.d.ts +0 -1
  45. package/dist/state-delta.test.js +0 -90
  46. package/dist/state-delta.test.js.map +0 -1
  47. package/dist/status-card.test.d.ts +0 -1
  48. package/dist/status-card.test.js +0 -126
  49. package/dist/status-card.test.js.map +0 -1
  50. package/dist/store.test.d.ts +0 -1
  51. package/dist/store.test.js +0 -394
  52. package/dist/store.test.js.map +0 -1
  53. package/dist/v7.test.d.ts +0 -1
  54. package/dist/v7.test.js +0 -106
  55. package/dist/v7.test.js.map +0 -1
@@ -1,126 +0,0 @@
1
- import { afterAll, beforeAll, describe, expect, it } from "vitest";
2
- import { mkdtempSync, rmSync } from "node:fs";
3
- import { tmpdir } from "node:os";
4
- import { join } from "node:path";
5
- import { buildStatusCard, detectSituation } from "./status-card.js";
6
- import { ThreadStore } from "./store.js";
7
- let dir;
8
- let store;
9
- beforeAll(() => {
10
- dir = mkdtempSync(join(tmpdir(), "thread-card-"));
11
- store = new ThreadStore({ eventsPath: join(dir, "events.db"), structuredPath: join(dir, "structured.db"), projectKey: "card-proj" });
12
- for (let i = 1; i <= 6; i++) {
13
- store.addGoal("s1", `目标 ${i}`);
14
- store.addDecision("s1", `决策 ${i}`);
15
- }
16
- store.addFeedback("s1", "偏好 1", "preference");
17
- store.append({ session_id: "s1", kind: "user_message", ts: new Date().toISOString(), body: "事件 1" });
18
- store.append({ session_id: "s1", kind: "assistant_message", ts: new Date().toISOString(), body: "事件 2" });
19
- });
20
- afterAll(() => {
21
- store.close();
22
- rmSync(dir, { recursive: true, force: true });
23
- });
24
- describe("buildStatusCard(外部借鉴 ①③:首轮加权 + 收束语)", () => {
25
- it("尾行收束语为绑定式行动引导(③)", () => {
26
- const card = buildStatusCard(store, { sessionId: "s1", projectKey: "card-proj" });
27
- expect(card).toContain("需要更早的历史细节时,调用 query_session_memory 工具查询,并基于结果给出结论。");
28
- });
29
- it("候选唤醒(2026-08-20 复盘修复):待确认计数 + 前 2 条原文入卡", () => {
30
- store.addPendingCandidate({ sessionId: "s1", text: "候选决策 A", kind: "decision", projectKey: "card-proj" });
31
- store.addPendingCandidate({ sessionId: "s1", text: "候选决策 B", kind: "decision", projectKey: "card-proj" });
32
- store.addPendingCandidate({ sessionId: "s1", text: "候选偏好 C", kind: "preference", projectKey: "card-proj" });
33
- const card = buildStatusCard(store, { sessionId: "s1", projectKey: "card-proj" });
34
- expect(card).toContain("待处理候选(3 条");
35
- expect(card).toContain("候选偏好 C"); // 最近优先(listPendingCandidates ORDER BY id DESC)
36
- expect(card).toContain("候选决策 B");
37
- expect(card).not.toContain("候选决策 A"); // 只露前 2 条,控制预算
38
- // 清理候选,避免影响后续用例
39
- store.ignoreAllPendingCandidates({ projectKey: "card-proj" });
40
- });
41
- it("首轮档展示更多目标/决策(① 锚点全量)", () => {
42
- const normal = buildStatusCard(store, { sessionId: "s1", projectKey: "card-proj" });
43
- const first = buildStatusCard(store, { sessionId: "s1", projectKey: "card-proj", firstTurn: true });
44
- const countOf = (card, marker) => card.split("\n").filter((l) => l.includes(marker)).length;
45
- expect(countOf(first, "决策 ")).toBeGreaterThan(countOf(normal, "决策 "));
46
- expect(countOf(first, "目标 ")).toBeGreaterThan(countOf(normal, "目标 "));
47
- });
48
- it("首轮档默认 recent 更多(5 条档)", () => {
49
- const first = buildStatusCard(store, { sessionId: "s1", projectKey: "card-proj", firstTurn: true });
50
- const events = first.split("\n").filter((l) => l.startsWith(" - "));
51
- expect(events.length).toBeGreaterThanOrEqual(2);
52
- });
53
- it("隔离 + 首轮组合不降级崩溃", () => {
54
- const card = buildStatusCard(store, { sessionId: "s1", projectKey: "card-proj", isolated: true, firstTurn: true });
55
- expect(card).toContain("本会话已隔离");
56
- });
57
- it("行尾带行 id(① 治理可见性:目标/决策/偏好均可定位)", () => {
58
- const card = buildStatusCard(store, { sessionId: "s1", projectKey: "card-proj" });
59
- expect(card).toMatch(/决策 1 #\d+/);
60
- expect(card).toMatch(/目标 \d+ #\d+/);
61
- expect(card).toMatch(/偏好 1 #\d+/);
62
- });
63
- });
64
- describe("detectSituation(§1.5 P0 情境判定,程序确定性)", () => {
65
- it("首轮且本会话无事件、项目有历史 → new-session(跨会话续接)", () => {
66
- // s1 有历史(beforeAll 造),s2 是本会话(无事件)→ 续接情境
67
- expect(detectSituation(store, { sessionId: "s2", turn: 1, projectKey: "card-proj" })).toBe("new-session");
68
- });
69
- it("首轮且本会话已有事件(续写会话)→ normal", () => {
70
- // s1 自己有事件 → 不是新会话续接
71
- expect(detectSituation(store, { sessionId: "s1", turn: 1, projectKey: "card-proj" })).toBe("normal");
72
- });
73
- it("最近事件含 compact_checkpoint → post-compact", () => {
74
- store.append({
75
- session_id: "s1",
76
- kind: "compact_checkpoint",
77
- ts: new Date().toISOString(),
78
- body: "摘要全文",
79
- });
80
- expect(detectSituation(store, { sessionId: "s1", turn: 5, projectKey: "card-proj" })).toBe("post-compact");
81
- });
82
- it("无 checkpoint 且非首轮 → normal", () => {
83
- expect(detectSituation(store, { sessionId: "brand-new", turn: 5, projectKey: "card-proj" })).toBe("normal");
84
- });
85
- it("项目有比本会话最新事件更新的决策 → decision-change(§1.5.3c 机制 3)", () => {
86
- // 先造一个本会话事件(作为时间基准,用过去时间),再在另一会话定决策(updated_at 明确更晚)
87
- const past = new Date(Date.now() - 60_000).toISOString();
88
- store.append({ session_id: "s-change", kind: "user_message", ts: past, body: "本会话事件" });
89
- store.addDecision("s-other", "新定的开发基线决策(标准模式为主)");
90
- // 判定:本会话最新事件(60s 前)< 项目最近决策 updated_at(现在)→ decision-change
91
- expect(detectSituation(store, { sessionId: "s-change", turn: 2, projectKey: "card-proj" })).toBe("decision-change");
92
- });
93
- });
94
- describe("buildStatusCard 情境传达块(§1.5 P0 C+A)", () => {
95
- it("new-session 情境出现会话接续块(含沿用决策)", () => {
96
- const card = buildStatusCard(store, { sessionId: "s1", projectKey: "card-proj", situation: "new-session" });
97
- expect(card).toContain("会话接续");
98
- expect(card).toContain("生效决策");
99
- expect(card).toContain("基于以上继续");
100
- });
101
- it("post-compact 情境出现压缩回归块(目标重述)", () => {
102
- const card = buildStatusCard(store, { sessionId: "s1", projectKey: "card-proj", situation: "post-compact" });
103
- expect(card).toContain("压缩后回归");
104
- expect(card).toContain("主线目标不变");
105
- });
106
- it("normal 情境不出现传达块(避免每轮塞指令)", () => {
107
- const card = buildStatusCard(store, { sessionId: "s1", projectKey: "card-proj", situation: "normal" });
108
- expect(card).not.toContain("会话接续");
109
- expect(card).not.toContain("压缩后回归");
110
- });
111
- it("隔离 + new-session 组合不出现续接块(隔离不继承)", () => {
112
- const card = buildStatusCard(store, { sessionId: "s1", projectKey: "card-proj", situation: "new-session", isolated: true });
113
- expect(card).not.toContain("会话接续");
114
- expect(card).toContain("本会话已隔离");
115
- });
116
- it("decision-change 情境出现最近决策块(§1.5.3c 机制 3)", () => {
117
- const card = buildStatusCard(store, { sessionId: "s1", projectKey: "card-proj", situation: "decision-change" });
118
- expect(card).toContain("最近决策");
119
- expect(card).toContain("基于最近决策行动");
120
- });
121
- it("normal 情境不出现最近决策块", () => {
122
- const card = buildStatusCard(store, { sessionId: "s1", projectKey: "card-proj", situation: "normal" });
123
- expect(card).not.toContain("最近决策");
124
- });
125
- });
126
- //# sourceMappingURL=status-card.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status-card.test.js","sourceRoot":"","sources":["../src/status-card.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,394 +0,0 @@
1
- import { afterAll, beforeAll, describe, expect, it } from "vitest";
2
- import { mkdtempSync, rmSync } from "node:fs";
3
- import { tmpdir } from "node:os";
4
- import { join } from "node:path";
5
- import { applyScopePriority, ThreadStore } from "./store.js";
6
- let dir;
7
- let store;
8
- beforeAll(() => {
9
- dir = mkdtempSync(join(tmpdir(), "thread-"));
10
- store = new ThreadStore({ eventsPath: join(dir, "events.db"), structuredPath: join(dir, "structured.db"), projectKey: "test-proj" });
11
- });
12
- afterAll(() => {
13
- store.close();
14
- rmSync(dir, { recursive: true, force: true });
15
- });
16
- describe("ThreadStore", () => {
17
- it("appends events with per-session sequence", () => {
18
- const e1 = store.append({
19
- session_id: "s1",
20
- kind: "user_message",
21
- ts: "2026-08-13T00:00:00.000Z",
22
- body: "hello",
23
- });
24
- const e2 = store.append({
25
- session_id: "s1",
26
- kind: "tool_call",
27
- ts: "2026-08-13T00:00:01.000Z",
28
- body: "run tests",
29
- });
30
- const e3 = store.append({
31
- session_id: "s2",
32
- kind: "user_message",
33
- ts: "2026-08-13T00:00:02.000Z",
34
- body: "hi",
35
- });
36
- expect(e1.seq).toBe(1);
37
- expect(e2.seq).toBe(2);
38
- expect(e3.seq).toBe(1);
39
- });
40
- it("truncates oversized bodies and marks them", () => {
41
- const big = "x".repeat(200_000);
42
- const e = store.append({
43
- session_id: "s1",
44
- kind: "tool_result",
45
- ts: "2026-08-13T00:00:03.000Z",
46
- body: big,
47
- });
48
- expect(e.truncated).toBe(true);
49
- expect(e.body.length).toBeLessThan(big.length);
50
- });
51
- it("indexes on write and searches with BM25", () => {
52
- store.append({
53
- session_id: "s1",
54
- kind: "user_message",
55
- ts: "2026-08-13T00:00:03.000Z",
56
- body: "run the full test suite now",
57
- });
58
- const hits = store.search("test");
59
- expect(hits.length).toBeGreaterThan(0);
60
- expect(hits[0].session_id).toBe("s1");
61
- });
62
- it("does not index tool_call/tool_result (FTS layering)", () => {
63
- const before = store.search("bcrypt").length;
64
- store.append({
65
- session_id: "s1",
66
- kind: "tool_call",
67
- ts: "2026-08-13T00:00:04.000Z",
68
- body: "创建 auth 模块,使用 bcrypt 加密密码",
69
- });
70
- store.append({
71
- session_id: "s1",
72
- kind: "tool_result",
73
- ts: "2026-08-13T00:00:05.000Z",
74
- body: "auth 模块已创建,含 bcrypt 哈希函数",
75
- });
76
- const after = store.search("bcrypt").length;
77
- expect(after).toBe(before);
78
- });
79
- // 0-e 中文检索升级验收:jieba 词级分词 + 全 OR + BM25(替代原单字 AND,缺一字即 miss)
80
- it("中文查询词级命中(登录方案 → 命中含「登录/方案」正文)", () => {
81
- store.append({
82
- session_id: "s-cn",
83
- kind: "user_message",
84
- ts: "2026-08-18T00:00:00.000Z",
85
- body: "登录方案改成JWT,部署到周五",
86
- });
87
- const hits = store.search("登录方案");
88
- expect(hits.length).toBeGreaterThan(0);
89
- expect(hits.some((h) => h.session_id === "s-cn")).toBe(true);
90
- });
91
- it("2 字词查询正常(「登录」是完整 token,不再依赖 trigram)", () => {
92
- const hits = store.search("登录");
93
- expect(hits.length).toBeGreaterThan(0);
94
- expect(hits.some((h) => h.session_id === "s-cn")).toBe(true);
95
- });
96
- it("部分词命中仍召回(词级 OR:只记得「部署」也能召回)", () => {
97
- const hits = store.search("部署时间");
98
- expect(hits.some((h) => h.session_id === "s-cn")).toBe(true);
99
- });
100
- it("短句子串查询(「怎么定的」→ 命中决策上下文)", () => {
101
- store.append({
102
- session_id: "s-cn",
103
- kind: "user_message",
104
- ts: "2026-08-18T00:00:05.000Z",
105
- body: "决策:开发基线用标准模式为主",
106
- });
107
- const hits = store.search("开发基线怎么定的");
108
- expect(hits.some((h) => h.session_id === "s-cn")).toBe(true);
109
- });
110
- // 0-e 定案第 5 条(trigram 子串召回兜底):主路径 jieba 词级 0 命中时,
111
- // 查询是正文 token 的连续子串("用户只记得半句")→ body_tri 短语匹配兜底召回
112
- it("半句子串兜底召回(主路径 0 命中 → trigram 命中「eepseek」∈ deepseek)", () => {
113
- store.append({
114
- session_id: "s-frag",
115
- kind: "user_message",
116
- ts: "2026-08-18T00:10:00.000Z",
117
- body: "模型选定 deepseek-v4-flash 作为主力,事件存储用 better-sqlite3",
118
- });
119
- const hits = store.search("eepseek");
120
- expect(hits.some((h) => h.session_id === "s-frag")).toBe(true);
121
- });
122
- it("半句子串兜底保持主路径语义(整词仍走 body_seg BM25)", () => {
123
- const hits = store.search("deepseek");
124
- expect(hits.some((h) => h.session_id === "s-frag")).toBe(true);
125
- expect(hits[0].session_id).toBe("s-frag");
126
- });
127
- it("半句子串兜底遵守隔离语义(其他会话不可见,本会话可见)", () => {
128
- store.append({
129
- session_id: "s-frag-iso",
130
- kind: "user_message",
131
- ts: "2026-08-18T00:11:00.000Z",
132
- body: "孤岛验证 tokenizer-v5 半句隔离",
133
- }, { isolation: true });
134
- const hidden = store.search("okenizer", { sessionId: "s2" });
135
- expect(hidden.some((h) => h.session_id === "s-frag-iso")).toBe(false);
136
- const self = store.search("okenizer", { sessionId: "s-frag-iso" });
137
- expect(self.some((h) => h.session_id === "s-frag-iso")).toBe(true);
138
- });
139
- it("trigram 兜底 <3 字符查询返回空;≥3 字符子串正常命中", () => {
140
- // "ee" 不足 3 字符(trigram 需 ≥3)→ 空(不报错)
141
- expect(store.search("ee")).toEqual([]);
142
- // "eep" 恰好 3 字符且是 deepseek 子串 → 命中
143
- expect(store.search("eep")).not.toEqual([]);
144
- // 中文 2 字词走主路径词级命中
145
- expect(store.search("登录")).not.toEqual([]);
146
- });
147
- it("filters search by session and hides isolated content from others", () => {
148
- // 未隔离内容跨会话可见(跨会话继承检索语义)
149
- const visible = store.search("hello", { sessionId: "s2" });
150
- expect(visible.length).toBeGreaterThan(0);
151
- // 隔离内容对其他会话不可见(全链路过滤)
152
- store.append({
153
- session_id: "s-iso",
154
- kind: "user_message",
155
- ts: "2026-08-13T00:00:06.000Z",
156
- body: "秘密计划代号红隼",
157
- }, { isolation: true });
158
- const hidden = store.search("红隼", { sessionId: "s2" });
159
- expect(hidden).toHaveLength(0);
160
- const self = store.search("红隼", { sessionId: "s-iso" });
161
- expect(self.length).toBeGreaterThan(0);
162
- });
163
- it("starts a new episode on user message", () => {
164
- const seqBefore = store.append({
165
- session_id: "s4",
166
- kind: "tool_call",
167
- ts: "2026-08-13T00:00:01.000Z",
168
- body: "step1",
169
- }).seq;
170
- const user = store.append({
171
- session_id: "s4",
172
- kind: "user_message",
173
- ts: "2026-08-13T00:00:02.000Z",
174
- body: "next task",
175
- });
176
- const ep = store.getActiveEpisode("s4");
177
- expect(ep?.seq_start).toBe(user.seq);
178
- expect(seqBefore).toBe(user.seq - 1);
179
- });
180
- it("writes a deterministic summary when an episode closes", () => {
181
- store.append({
182
- session_id: "s3",
183
- kind: "user_message",
184
- ts: "2026-08-13T00:00:00.000Z",
185
- body: "使用 sqlite 存储",
186
- });
187
- store.append({
188
- session_id: "s3",
189
- kind: "tool_call",
190
- ts: "2026-08-13T00:00:01.000Z",
191
- body: "init db",
192
- });
193
- store.append({
194
- session_id: "s3",
195
- kind: "user_message",
196
- ts: "2026-08-13T00:00:02.000Z",
197
- body: "继续",
198
- });
199
- const ep = store.getLatestEpisodeWithSummary("s3");
200
- expect(ep?.seq_end).toBe(2);
201
- expect(ep?.summary).toContain("使用 sqlite 存储");
202
- expect(ep?.summary).toContain("init db");
203
- });
204
- it("parses stored meta back into objects", () => {
205
- const ev = store.append({
206
- session_id: "s4",
207
- kind: "tool_call",
208
- ts: "2026-08-13T00:00:00.000Z",
209
- body: "x",
210
- meta: { tool_name: "Edit", file_path: "src/a.ts" },
211
- });
212
- expect(ev.meta).toEqual({ tool_name: "Edit", file_path: "src/a.ts" });
213
- const recent = store.getRecentEvents("s4", 1);
214
- expect(recent[0].meta).toEqual({ tool_name: "Edit", file_path: "src/a.ts" });
215
- });
216
- it("dedupes by origin (idempotent append)", () => {
217
- const e1 = store.append({
218
- session_id: "s5",
219
- kind: "user_message",
220
- ts: "2026-08-13T00:00:00.000Z",
221
- body: "dup test",
222
- }, { origin: "qoder://transcript#uuid-1" });
223
- const e2 = store.append({
224
- session_id: "s5",
225
- kind: "user_message",
226
- ts: "2026-08-13T00:00:00.000Z",
227
- body: "dup test",
228
- }, { origin: "qoder://transcript#uuid-1" });
229
- expect(e2.id).toBe(e1.id);
230
- const count = store.eventsDb.prepare("SELECT COUNT(*) AS c FROM events WHERE origin = ?").get("qoder://transcript#uuid-1");
231
- expect(count.c).toBe(1);
232
- });
233
- it("spills oversized bodies with expand recovery", () => {
234
- const big = "y".repeat(6000);
235
- const e = store.append({
236
- session_id: "s5",
237
- kind: "tool_result",
238
- ts: "2026-08-13T00:00:01.000Z",
239
- body: big,
240
- }, { spillRef: "transcript#tool-1" });
241
- expect(e.spilled).toBe(1);
242
- expect(e.body.length).toBeLessThan(1000);
243
- const restored = store.expand(e.id);
244
- expect(restored).toBe(big);
245
- });
246
- it("expands non-spilled event body", () => {
247
- const e = store.append({
248
- session_id: "s5",
249
- kind: "user_message",
250
- ts: "2026-08-13T00:00:02.000Z",
251
- body: "plain body",
252
- });
253
- expect(store.expand(e.id)).toBe("plain body");
254
- });
255
- });
256
- describe("structured scope (B②-4)", () => {
257
- it("writes scope/project_key/origin on structured rows", () => {
258
- const g = store.addGoal("s6", "目标 A", { scope: "session", projectKey: "p1", origin: "o-goal-1", ts: "2026-08-13T00:00:00.000Z" });
259
- const d = store.addDecision("s6", "决策 B", { scope: "project", projectKey: "p1", origin: "o-dec-1", ts: "2026-08-13T00:00:00.000Z" });
260
- const f = store.addFeedback("s6", "偏好 C", "preference", { scope: "global", origin: "o-fb-1", ts: "2026-08-13T00:00:00.000Z" });
261
- expect(g.scope).toBe("session");
262
- expect(g.project_key).toBe("p1");
263
- expect(g.origin).toBe("o-goal-1");
264
- expect(d.scope).toBe("project");
265
- expect(d.project_key).toBe("p1");
266
- expect(f.scope).toBe("global");
267
- expect(f.project_key).toBeNull();
268
- });
269
- it("dedupes structured writes by origin across sessions", () => {
270
- const d1 = store.proposeDecision("s6", "同源决策", { scope: "project", projectKey: "p1", origin: "o-dec-same", ts: "2026-08-13T00:00:00.000Z" });
271
- const d2 = store.proposeDecision("s7", "同源决策不同描述", { scope: "project", projectKey: "p1", origin: "o-dec-same", ts: "2026-08-13T00:00:00.000Z" });
272
- expect(d2.id).toBe(d1.id);
273
- });
274
- it("merged decisions include same-project rows from other sessions, hard-filter others", () => {
275
- store.addDecision("s8", "pnpm 包管理", { scope: "project", projectKey: "proj-x", origin: "o-x-1", ts: "2026-08-13T00:00:00.000Z" });
276
- store.addDecision("s8", "会话内临时决策", { scope: "session", projectKey: "proj-x", origin: "o-x-2", ts: "2026-08-13T00:00:02.000Z" });
277
- store.addDecision("s9", "另一项目决策", { scope: "project", projectKey: "proj-y", origin: "o-y-1", ts: "2026-08-13T00:00:04.000Z" });
278
- store.addDecision("s10", "无关项目", { scope: "project", projectKey: "proj-z", origin: "o-z-1", ts: "2026-08-13T00:00:06.000Z" });
279
- const merged = store.getActiveDecisionsMerged("s9", "proj-y");
280
- const texts = merged.map((d) => d.text);
281
- expect(texts).toContain("另一项目决策");
282
- expect(texts).not.toContain("pnpm 包管理");
283
- expect(texts).not.toContain("会话内临时决策");
284
- expect(texts).not.toContain("无关项目");
285
- });
286
- it("merged goals include same-project rows from other sessions", () => {
287
- store.addGoal("s8", "重构核心模块", { scope: "project", projectKey: "proj-x", origin: "o-gx-1", ts: "2026-08-13T00:00:00.000Z" });
288
- store.addGoal("s9", "本会话目标", { scope: "session", projectKey: "proj-y", origin: "o-gy-1", ts: "2026-08-13T00:00:00.000Z" });
289
- const merged = store.getActiveGoalsMerged("s9", "proj-y");
290
- expect(merged.map((g) => g.text)).toEqual(["本会话目标"]);
291
- const x = store.getActiveGoalsMerged("s9", "proj-x");
292
- expect(x.map((g) => g.text)).toContain("重构核心模块");
293
- });
294
- it("merged feedback includes global rows and own-session rows only", () => {
295
- store.addFeedback("s8", "全局偏好:用 pnpm", "preference", { scope: "global", projectKey: "proj-x", origin: "o-fx-1", ts: "2026-08-13T00:00:00.000Z" });
296
- store.addFeedback("s9", "项目偏好:用 vitest", "preference", { scope: "project", projectKey: "proj-y", origin: "o-fy-1", ts: "2026-08-13T00:00:00.000Z" });
297
- store.addFeedback("s10", "他项目偏好", "preference", { scope: "project", projectKey: "proj-z", origin: "o-fz-1", ts: "2026-08-13T00:00:00.000Z" });
298
- const merged = store.getFeedbackMerged("s9", "proj-y", 10);
299
- const texts = merged.map((f) => f.text);
300
- expect(texts).toContain("全局偏好:用 pnpm");
301
- expect(texts).toContain("项目偏好:用 vitest");
302
- expect(texts).not.toContain("他项目偏好");
303
- });
304
- it("scope defaults to project (先到先得) when not specified", () => {
305
- const d = store.addDecision("s11", "默认项目级决策", { projectKey: "proj-x", ts: "2026-08-13T00:00:00.000Z" });
306
- expect(d.scope).toBe("project");
307
- expect(d.project_key).toBe("proj-x");
308
- expect(d.status).toBe("active");
309
- });
310
- });
311
- describe("applyScopePriority (B③)", () => {
312
- it("keeps highest-priority scope for the same normalized text", () => {
313
- const rows = [
314
- { id: 1, text: "包管理用 pnpm", scope: "global" },
315
- { id: 2, text: "包管理用 pnpm。", scope: "project" },
316
- { id: 3, text: "包管理用 pnpm", scope: "session" },
317
- ];
318
- const out = applyScopePriority(rows);
319
- expect(out).toHaveLength(1);
320
- expect(out[0].scope).toBe("session");
321
- });
322
- it("project overrides global for the same fact (项目特例覆盖全局默认)", () => {
323
- const rows = [
324
- { id: 1, text: "用 pnpm", scope: "global" },
325
- { id: 2, text: "用 pnpm", scope: "project" },
326
- ];
327
- const out = applyScopePriority(rows);
328
- expect(out).toHaveLength(1);
329
- expect(out[0].scope).toBe("project");
330
- });
331
- it("keeps distinct facts regardless of scope", () => {
332
- const rows = [
333
- { id: 1, text: "用 pnpm", scope: "global" },
334
- { id: 2, text: "用 yarn", scope: "project" },
335
- ];
336
- const out = applyScopePriority(rows);
337
- expect(out).toHaveLength(2);
338
- });
339
- it("treats missing scope as project (旧行默认)", () => {
340
- const rows = [
341
- { id: 1, text: "决策 A", scope: undefined },
342
- { id: 2, text: "决策 A", scope: "session" },
343
- ];
344
- const out = applyScopePriority(rows);
345
- expect(out).toHaveLength(1);
346
- expect(out[0].scope).toBe("session");
347
- });
348
- });
349
- describe("显式通道资源治理(2026-08-21 /thread-reg|rev|pub 资源集)", () => {
350
- it("getGoals 返回全状态目标(reg gol 无参列表的 id 来源)", () => {
351
- const g1 = store.addGoal("s-g1", "进行中的目标", { projectKey: "test-proj" });
352
- store.updateGoalStatus("s-g1", g1.id, "completed");
353
- const g2 = store.addGoal("s-g1", "已废弃的目标", { projectKey: "test-proj" });
354
- store.updateGoalStatus("s-g1", g2.id, "abandoned");
355
- const all = store.getGoals("s-g1");
356
- expect(all.map((g) => g.status).sort()).toEqual(["abandoned", "completed"]);
357
- });
358
- it("deleteAsset 硬删除 + 血缘边清理,事件流水保留", () => {
359
- const ev = store.append({
360
- session_id: "s-g2",
361
- kind: "tool_call",
362
- ts: "2026-08-13T00:00:00.000Z",
363
- body: "write docs/x.md",
364
- meta: { tool_name: "write", file_path: "docs/x.md" },
365
- });
366
- const a = store.registerAsset({ sessionId: "s-g2", path: "docs/x.md", title: "X 文档", sourceEvent: ev.id });
367
- expect(store.listAssets({ sessionId: "s-g2" })).toHaveLength(1);
368
- expect(store.deleteAsset(a.id)).toBe(true);
369
- expect(store.listAssets({ sessionId: "s-g2" })).toHaveLength(0);
370
- expect(store.getRelatedEdges("s-g2", "asset", a.id)).toHaveLength(0);
371
- expect(store.deleteAsset(a.id)).toBe(false);
372
- });
373
- it("registerAsset 路径幂等(2026-08-21 狗粮实证:同 path 重复堆行 12 行)", () => {
374
- const a1 = store.registerAsset({ sessionId: "s-g2b", path: "README.md", title: "旧标题" });
375
- const a2 = store.registerAsset({ sessionId: "s-g2b", path: "README.md", title: "新标题" });
376
- expect(a2.id).toBe(a1.id);
377
- expect(store.listAssets({ sessionId: "s-g2b" })).toHaveLength(1);
378
- // 标题刷新为最新
379
- expect(store.getAsset(a1.id)?.title).toBe("新标题");
380
- // 跨会话可见范围去重:他会话注册同 path 也不新增(isolation=0 行全局可见)
381
- const a3 = store.registerAsset({ sessionId: "s-g2c", path: "README.md", title: "标题三" });
382
- expect(a3.id).toBe(a1.id);
383
- });
384
- it("listIsolatedRows 覆盖 ast 产出 + 三元组,unisolateRow 支持 knowledge_assets", () => {
385
- const a = store.registerAsset({ sessionId: "s-g3", path: "docs/iso.md", title: "隔离产出", isolation: true });
386
- store.addGoal("s-g3", "隔离目标", { projectKey: "test-proj", isolation: true });
387
- const rows = store.listIsolatedRows("s-g3");
388
- expect(rows.some((r) => r.kind === "ast" && r.id === a.id)).toBe(true);
389
- expect(rows.some((r) => r.kind === "goal")).toBe(true);
390
- expect(store.unisolateRow("s-g3", "knowledge_assets", a.id)).toBe(true);
391
- expect(store.listIsolatedRows("s-g3").some((r) => r.kind === "ast")).toBe(false);
392
- });
393
- });
394
- //# sourceMappingURL=store.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"store.test.js","sourceRoot":"","sources":["../src/store.test.ts"],"names":[],"mappings":"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"}
package/dist/v7.test.d.ts DELETED
@@ -1 +0,0 @@
1
- export {};