@downcity/plugins 1.0.252 → 1.0.254

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 (67) hide show
  1. package/bin/memory/Action.d.ts +27 -36
  2. package/bin/memory/Action.d.ts.map +1 -1
  3. package/bin/memory/Action.js +71 -311
  4. package/bin/memory/Action.js.map +1 -1
  5. package/bin/memory/Index.d.ts +3 -1
  6. package/bin/memory/Index.d.ts.map +1 -1
  7. package/bin/memory/Index.js +3 -1
  8. package/bin/memory/Index.js.map +1 -1
  9. package/bin/memory/MemoryPlugin.d.ts +20 -37
  10. package/bin/memory/MemoryPlugin.d.ts.map +1 -1
  11. package/bin/memory/MemoryPlugin.js +231 -233
  12. package/bin/memory/MemoryPlugin.js.map +1 -1
  13. package/bin/memory/adapters/FileMemoryStorageAdapter.d.ts +43 -0
  14. package/bin/memory/adapters/FileMemoryStorageAdapter.d.ts.map +1 -0
  15. package/bin/memory/adapters/FileMemoryStorageAdapter.js +163 -0
  16. package/bin/memory/adapters/FileMemoryStorageAdapter.js.map +1 -0
  17. package/bin/memory/providers/BuiltinMemoryProvider.d.ts +63 -0
  18. package/bin/memory/providers/BuiltinMemoryProvider.d.ts.map +1 -0
  19. package/bin/memory/providers/BuiltinMemoryProvider.js +772 -0
  20. package/bin/memory/providers/BuiltinMemoryProvider.js.map +1 -0
  21. package/bin/memory/runtime/SystemProvider.d.ts +7 -12
  22. package/bin/memory/runtime/SystemProvider.d.ts.map +1 -1
  23. package/bin/memory/runtime/SystemProvider.js +30 -89
  24. package/bin/memory/runtime/SystemProvider.js.map +1 -1
  25. package/bin/memory/types/BuiltinMemoryProvider.d.ts +88 -0
  26. package/bin/memory/types/BuiltinMemoryProvider.d.ts.map +1 -0
  27. package/bin/memory/types/BuiltinMemoryProvider.js +9 -0
  28. package/bin/memory/types/BuiltinMemoryProvider.js.map +1 -0
  29. package/bin/memory/types/Memory.d.ts +249 -408
  30. package/bin/memory/types/Memory.d.ts.map +1 -1
  31. package/bin/memory/types/Memory.js +4 -4
  32. package/bin/memory/types/MemoryStorage.d.ts +35 -0
  33. package/bin/memory/types/MemoryStorage.d.ts.map +1 -0
  34. package/bin/memory/types/MemoryStorage.js +10 -0
  35. package/bin/memory/types/MemoryStorage.js.map +1 -0
  36. package/bin/memory.d.ts +6 -2
  37. package/bin/memory.d.ts.map +1 -1
  38. package/bin/memory.js +3 -1
  39. package/bin/memory.js.map +1 -1
  40. package/package.json +4 -3
  41. package/scripts/memory-plugin.test.mjs +227 -0
  42. package/scripts/plugin-subpaths.test.mjs +8 -0
  43. package/src/memory/Action.ts +106 -377
  44. package/src/memory/Index.ts +6 -1
  45. package/src/memory/MemoryPlugin.ts +254 -246
  46. package/src/memory/adapters/FileMemoryStorageAdapter.ts +197 -0
  47. package/src/memory/providers/BuiltinMemoryProvider.ts +905 -0
  48. package/src/memory/runtime/SystemProvider.ts +32 -95
  49. package/src/memory/types/BuiltinMemoryProvider.ts +121 -0
  50. package/src/memory/types/Memory.ts +322 -456
  51. package/src/memory/types/MemoryStorage.ts +44 -0
  52. package/src/memory.ts +48 -24
  53. package/bin/memory/runtime/Search.d.ts +0 -19
  54. package/bin/memory/runtime/Search.d.ts.map +0 -1
  55. package/bin/memory/runtime/Search.js +0 -262
  56. package/bin/memory/runtime/Search.js.map +0 -1
  57. package/bin/memory/runtime/Store.d.ts +0 -42
  58. package/bin/memory/runtime/Store.d.ts.map +0 -1
  59. package/bin/memory/runtime/Store.js +0 -94
  60. package/bin/memory/runtime/Store.js.map +0 -1
  61. package/bin/memory/runtime/Writer.d.ts +0 -61
  62. package/bin/memory/runtime/Writer.d.ts.map +0 -1
  63. package/bin/memory/runtime/Writer.js +0 -274
  64. package/bin/memory/runtime/Writer.js.map +0 -1
  65. package/src/memory/runtime/Search.ts +0 -327
  66. package/src/memory/runtime/Store.ts +0 -158
  67. package/src/memory/runtime/Writer.ts +0 -351
@@ -1,42 +1,33 @@
1
1
  /**
2
- * Memory Plugin action 逻辑。
2
+ * Memory Plugin action 适配层。
3
3
  *
4
4
  * 关键点(中文)
5
- * - action 面向 agent 的记忆语义:search/read/remember/digest/revise。
6
- * - 原始证据先进入 sources,长期知识进入 wiki
7
- * - LLM digest/revise 能力由 MemoryPlugin constructor 注入。
5
+ * - Action 只把 Agent/Session 上下文映射为 MemoryProvider 的领域输入。
6
+ * - 物理存储、检索实现和提炼策略全部属于 Provider
7
+ * - 所有 Provider 异常都转换为稳定 PluginActionResult,不伪造成功。
8
8
  */
9
- import type { PluginActionResult } from "@downcity/agent";
10
- import type { PluginContext } from "@downcity/agent";
9
+ import type { PluginActionResult, PluginContext } from "@downcity/agent";
11
10
  import type { JsonValue } from "@downcity/agent";
12
- import type { MemoryDigestPayload, MemoryPluginOptions, MemoryReadPayload, MemoryRememberPayload, MemoryRevisePayload, MemorySearchPayload } from "../memory/types/Memory.js";
13
- import { type MemoryRuntimeState } from "./runtime/Store.js";
14
- /**
15
- * status action。
16
- */
17
- export declare function statusMemoryAction(context: PluginContext, state: MemoryRuntimeState): Promise<PluginActionResult<JsonValue>>;
18
- /**
19
- * search action。
20
- */
21
- export declare function searchMemoryAction(context: PluginContext, state: MemoryRuntimeState, payload: MemorySearchPayload): Promise<PluginActionResult<JsonValue>>;
22
- /**
23
- * read action
24
- */
25
- export declare function readMemoryAction(context: PluginContext, payload: MemoryReadPayload): Promise<PluginActionResult<JsonValue>>;
26
- /**
27
- * remember action。
28
- */
29
- export declare function rememberMemoryAction(context: PluginContext, options: MemoryPluginOptions, payload: MemoryRememberPayload): Promise<PluginActionResult<JsonValue>>;
30
- /**
31
- * digest action。
32
- */
33
- export declare function digestMemoryAction(context: PluginContext, options: MemoryPluginOptions, payload: MemoryDigestPayload): Promise<PluginActionResult<JsonValue>>;
34
- /**
35
- * revise action。
36
- */
37
- export declare function reviseMemoryAction(context: PluginContext, options: MemoryPluginOptions, payload: MemoryRevisePayload): Promise<PluginActionResult<JsonValue>>;
38
- /**
39
- * 把任意 payload 归一化为 search payload。
40
- */
41
- export declare function toSearchPayload(input: Record<string, unknown>): MemorySearchPayload;
11
+ import type { MemoryForgetInput, MemoryProvider, MemoryReadInput, MemoryRecallInput, MemoryRememberInput, MemoryReviseInput, MemoryScope } from "../memory/types/Memory.js";
12
+ /** PluginContext 构造当前 Runtime 的默认 Memory scope。 */
13
+ export declare function create_memory_scope(context: PluginContext, session_id?: string): MemoryScope;
14
+ /** status action。 */
15
+ export declare function status_memory_action(provider: MemoryProvider): Promise<PluginActionResult<JsonValue>>;
16
+ /** search action,内部委托 Provider recall。 */
17
+ export declare function search_memory_action(context: PluginContext, provider: MemoryProvider, input: Omit<MemoryRecallInput, "scope">): Promise<PluginActionResult<JsonValue>>;
18
+ /** read action。 */
19
+ export declare function read_memory_action(context: PluginContext, provider: MemoryProvider, input: Omit<MemoryReadInput, "scope">): Promise<PluginActionResult<JsonValue>>;
20
+ /** remember action。 */
21
+ export declare function remember_memory_action(context: PluginContext, provider: MemoryProvider, input: Omit<MemoryRememberInput, "scope">): Promise<PluginActionResult<JsonValue>>;
22
+ /** digest action:Session 消息读取属于 Plugin 编排,长期记忆语义属于 Provider */
23
+ export declare function digest_memory_action(context: PluginContext, provider: MemoryProvider, input: {
24
+ /** 需要提炼的 Session 标识。 */
25
+ session_id: string;
26
+ /** 可选最大消息提取条数。 */
27
+ max_messages?: number;
28
+ }): Promise<PluginActionResult<JsonValue>>;
29
+ /** revise action。 */
30
+ export declare function revise_memory_action(context: PluginContext, provider: MemoryProvider, input: Omit<MemoryReviseInput, "scope">): Promise<PluginActionResult<JsonValue>>;
31
+ /** forget action。 */
32
+ export declare function forget_memory_action(context: PluginContext, provider: MemoryProvider, input: Omit<MemoryForgetInput, "scope">): Promise<PluginActionResult<JsonValue>>;
42
33
  //# sourceMappingURL=Action.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Action.d.ts","sourceRoot":"","sources":["../../src/memory/Action.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EACV,mBAAmB,EAEnB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EAErB,mBAAmB,EAEnB,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAKlC,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,oBAAoB,CAAC;AA0G5B;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAaxC;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAaxC;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAUxC;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CA2DxC;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAwExC;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAgDxC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB,CAsBnF"}
1
+ {"version":3,"file":"Action.d.ts","sourceRoot":"","sources":["../../src/memory/Action.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAkB,MAAM,iBAAiB,CAAC;AACzF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAElC,qDAAqD;AACrD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,aAAa,EACtB,UAAU,CAAC,EAAE,MAAM,GAClB,WAAW,CAMb;AA4BD,qBAAqB;AACrB,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAExC;AAED,0CAA0C;AAC1C,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,GACtC,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAKxC;AAED,mBAAmB;AACnB,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GACpC,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAKxC;AAED,uBAAuB;AACvB,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,GACxC,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAKxC;AAED,gEAAgE;AAChE,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE;IACL,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GACA,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAwBxC;AAED,qBAAqB;AACrB,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,GACtC,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAKxC;AAED,qBAAqB;AACrB,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,GACtC,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAKxC"}
@@ -1,39 +1,20 @@
1
1
  /**
2
- * Memory Plugin action 逻辑。
2
+ * Memory Plugin action 适配层。
3
3
  *
4
4
  * 关键点(中文)
5
- * - action 面向 agent 的记忆语义:search/read/remember/digest/revise。
6
- * - 原始证据先进入 sources,长期知识进入 wiki
7
- * - LLM digest/revise 能力由 MemoryPlugin constructor 注入。
5
+ * - Action 只把 Agent/Session 上下文映射为 MemoryProvider 的领域输入。
6
+ * - 物理存储、检索实现和提炼策略全部属于 Provider
7
+ * - 所有 Provider 异常都转换为稳定 PluginActionResult,不伪造成功。
8
8
  */
9
- import { isTextUIPart } from "ai";
10
- import { collectMemoryStatus, searchMemory, } from "./runtime/Search.js";
11
- import { MEMORY_DEFAULTS, } from "./runtime/Store.js";
12
- import { appendManualSource, appendMemoryRevision, appendWikiPage, readMemory, readWikiIndex, writeSessionSource, writeWikiPage, } from "./runtime/Writer.js";
13
- function toUiParts(message) {
14
- const candidate = message;
15
- return Array.isArray(candidate?.parts)
16
- ? candidate.parts
17
- : [];
18
- }
19
- function extractReadableLine(message) {
20
- const candidate = message;
21
- const raw_role = String(candidate?.role || "").toLowerCase();
22
- if (raw_role !== "user" && raw_role !== "assistant")
23
- return "";
24
- const role = raw_role === "user" ? "User" : "Assistant";
25
- const text = toUiParts(message)
26
- .filter(isTextUIPart)
27
- .map((part) => String(part.text || "").trim())
28
- .filter(Boolean)
29
- .join("\n")
30
- .trim();
31
- if (!text) {
32
- return "";
33
- }
34
- return `${role}: ${text}`;
9
+ /** PluginContext 构造当前 Runtime 的默认 Memory scope。 */
10
+ export function create_memory_scope(context, session_id) {
11
+ return {
12
+ agent_id: context.agent_id,
13
+ workspace_id: context.workspace_path,
14
+ ...(session_id ? { session_id } : {}),
15
+ };
35
16
  }
36
- /** 从 canonical Session Message 提取 Memory digest 文本。 */
17
+ /** 从 canonical Session Message 提取可供 Provider 提炼的文本。 */
37
18
  function extract_session_message_line(message) {
38
19
  if (message.type !== "user" && message.type !== "assistant")
39
20
  return "";
@@ -45,303 +26,82 @@ function extract_session_message_line(message) {
45
26
  .trim();
46
27
  return text ? `${role}: ${text}` : "";
47
28
  }
48
- function readDigestPages(result) {
49
- if (typeof result === "string") {
50
- return {
51
- pages: [{ title: "Memory Digest", content: result, tags: ["memory", "digest"] }],
52
- };
53
- }
54
- return {
55
- pages: result.pages,
56
- summary: result.summary,
57
- };
58
- }
59
- function readReviseResult(result, fallbackPath) {
60
- if (typeof result === "string") {
61
- return {
62
- path: fallbackPath,
63
- content: result,
64
- };
65
- }
66
- return {
67
- path: result.path || fallbackPath,
68
- content: result.content,
69
- summary: result.summary,
70
- };
71
- }
72
- function slugify(value) {
73
- const text = String(value || "")
74
- .trim()
75
- .toLowerCase()
76
- .replace(/[^\p{L}\p{N}]+/gu, "-")
77
- .replace(/^-+|-+$/g, "")
78
- .slice(0, 80);
79
- return text || "inbox";
80
- }
81
- function toWikiMemoryPath(value) {
82
- const clean = String(value || "").replace(/\\/g, "/").replace(/^\/+/, "").trim();
83
- if (!clean)
84
- return ".downcity/memory/wiki/inbox.md";
85
- if (clean.startsWith(".downcity/memory/wiki/")) {
86
- return clean.toLowerCase().endsWith(".md") ? clean : `${clean}.md`;
87
- }
88
- const withoutPrefix = clean.replace(/^wiki\//, "");
89
- const withExt = withoutPrefix.toLowerCase().endsWith(".md")
90
- ? withoutPrefix
91
- : `${withoutPrefix}.md`;
92
- return `.downcity/memory/wiki/${withExt}`;
93
- }
94
- /**
95
- * status action。
96
- */
97
- export async function statusMemoryAction(context, state) {
29
+ /** 执行 Provider 调用并统一失败语义。 */
30
+ async function run_provider_action(action) {
98
31
  try {
99
- const stats = await collectMemoryStatus(context, state);
100
- return {
101
- success: true,
102
- data: stats,
103
- };
32
+ return { success: true, data: await action() };
104
33
  }
105
34
  catch (error) {
106
35
  return {
107
36
  success: false,
108
- error: String(error),
37
+ error: error instanceof Error ? error.message : String(error),
109
38
  };
110
39
  }
111
40
  }
112
- /**
113
- * search action。
114
- */
115
- export async function searchMemoryAction(context, state, payload) {
116
- try {
117
- const response = await searchMemory(context, state, payload);
118
- return {
119
- success: true,
120
- data: response,
121
- };
122
- }
123
- catch (error) {
124
- return {
125
- success: false,
126
- error: String(error),
127
- };
128
- }
41
+ /** status action。 */
42
+ export async function status_memory_action(provider) {
43
+ return await run_provider_action(async () => await provider.status());
129
44
  }
130
- /**
131
- * read action。
132
- */
133
- export async function readMemoryAction(context, payload) {
134
- try {
135
- const data = await readMemory(context, payload);
136
- return { success: true, data: data };
137
- }
138
- catch (error) {
139
- return {
140
- success: false,
141
- error: String(error),
142
- };
143
- }
45
+ /** search action,内部委托 Provider recall。 */
46
+ export async function search_memory_action(context, provider, input) {
47
+ return await run_provider_action(async () => await provider.recall({
48
+ ...input,
49
+ scope: create_memory_scope(context),
50
+ }));
144
51
  }
145
- /**
146
- * remember action。
147
- */
148
- export async function rememberMemoryAction(context, options, payload) {
149
- try {
150
- const content = String(payload.content || "").trim();
151
- if (!content) {
152
- throw new Error("content is required");
153
- }
154
- const source = await appendManualSource(context, content, payload.source);
155
- const targetPath = toWikiMemoryPath(payload.path || slugify(payload.topic || "inbox"));
156
- if (options.revise) {
157
- const current = await readMemory(context, { path: targetPath }).catch(() => ({
158
- path: targetPath,
159
- text: "",
160
- }));
161
- const revised = readReviseResult(await options.revise({
162
- rootPath: context.workspace_path,
163
- path: targetPath,
164
- currentContent: current.text,
165
- instruction: "Integrate this new memory into the wiki page. Deduplicate and keep it concise.",
166
- evidence: `${content}\n\nSource: ${source.path}`,
167
- }), targetPath);
168
- const written = await writeWikiPage(context, {
169
- path: revised.path,
170
- title: payload.topic,
171
- content: revised.content,
172
- tags: ["memory"],
173
- });
174
- const response = {
175
- sourcePath: source.path,
176
- wikiPath: written.path,
177
- mode: "revised",
178
- writtenChars: written.writtenChars,
179
- summary: revised.summary,
180
- };
181
- return { success: true, data: response };
182
- }
183
- const written = await appendWikiPage(context, {
184
- path: targetPath,
185
- title: payload.topic || "Memory Inbox",
186
- content,
187
- sourcePath: source.path,
188
- });
189
- const response = {
190
- sourcePath: source.path,
191
- wikiPath: written.path,
192
- mode: "appended",
193
- writtenChars: written.writtenChars,
194
- };
195
- return { success: true, data: response };
196
- }
197
- catch (error) {
198
- return {
199
- success: false,
200
- error: String(error),
201
- };
202
- }
52
+ /** read action。 */
53
+ export async function read_memory_action(context, provider, input) {
54
+ return await run_provider_action(async () => await provider.read({
55
+ ...input,
56
+ scope: create_memory_scope(context),
57
+ }));
203
58
  }
204
- /**
205
- * digest action。
206
- */
207
- export async function digestMemoryAction(context, options, payload) {
208
- try {
209
- const session_id = String(payload.session_id || "").trim();
210
- if (!session_id) {
59
+ /** remember action。 */
60
+ export async function remember_memory_action(context, provider, input) {
61
+ return await run_provider_action(async () => await provider.remember({
62
+ ...input,
63
+ scope: create_memory_scope(context),
64
+ }));
65
+ }
66
+ /** digest action:Session 消息读取属于 Plugin 编排,长期记忆语义属于 Provider。 */
67
+ export async function digest_memory_action(context, provider, input) {
68
+ return await run_provider_action(async () => {
69
+ const session_id = String(input.session_id || "").trim();
70
+ if (!session_id)
211
71
  throw new Error("session_id is required");
212
- }
213
- const maxMessages = Number.isFinite(payload.maxMessages)
214
- ? Math.max(1, Math.floor(payload.maxMessages))
72
+ const max_messages = Number.isFinite(input.max_messages)
73
+ ? Math.max(1, Math.floor(input.max_messages))
215
74
  : 30;
216
75
  const snapshot = await context.sessions.runtime(session_id).context();
217
- const total = snapshot.messages.length;
218
- const start = Math.max(0, total - maxMessages);
219
- const messages = snapshot.messages.slice(start);
220
- const lines = messages
221
- .map((message) => extract_session_message_line(message))
222
- .filter((line) => line.length > 0);
223
- const transcript = lines.length > 0
224
- ? lines.join("\n\n")
225
- : "本次 digest 未找到可写入的用户/助手文本内容。";
226
- const sourceText = [
227
- `Window: ${start}-${Math.max(start, total - 1)}`,
228
- "",
229
- transcript,
230
- ].join("\n");
231
- const source = await writeSessionSource(context, session_id, sourceText);
232
- if (options.digest) {
233
- const wikiIndex = await readWikiIndex(context);
234
- const digested = readDigestPages(await options.digest({
235
- rootPath: context.workspace_path,
236
- sourceText,
237
- sourcePath: source.path,
238
- session_id,
239
- wikiIndex,
240
- }));
241
- const wikiPaths = [];
242
- for (const page of digested.pages) {
243
- const written = await writeWikiPage(context, page);
244
- wikiPaths.push(written.path);
245
- }
246
- const response = {
247
- sourcePath: source.path,
248
- wikiPaths,
249
- message_count: lines.length,
250
- mode: "digested",
251
- summary: digested.summary,
252
- };
253
- return { success: true, data: response };
76
+ const start_index = Math.max(0, snapshot.messages.length - max_messages);
77
+ const lines = snapshot.messages
78
+ .slice(start_index)
79
+ .map(extract_session_message_line)
80
+ .filter(Boolean);
81
+ if (lines.length === 0) {
82
+ throw new Error("Session has no user or assistant text to digest");
254
83
  }
255
- const written = await appendWikiPage(context, {
256
- path: "session-digests",
257
- title: "Session Digests",
258
- content: sourceText,
259
- sourcePath: source.path,
260
- });
261
- const response = {
262
- sourcePath: source.path,
263
- wikiPaths: [written.path],
84
+ const transcript = lines.join("\n\n");
85
+ return await provider.digest({
86
+ session_id,
87
+ scope: create_memory_scope(context, session_id),
88
+ transcript,
264
89
  message_count: lines.length,
265
- mode: "archived",
266
- };
267
- return { success: true, data: response };
268
- }
269
- catch (error) {
270
- return {
271
- success: false,
272
- error: String(error),
273
- };
274
- }
90
+ });
91
+ });
275
92
  }
276
- /**
277
- * revise action。
278
- */
279
- export async function reviseMemoryAction(context, options, payload) {
280
- try {
281
- const targetPath = toWikiMemoryPath(String(payload.path || "").trim());
282
- if (!targetPath) {
283
- throw new Error("path is required");
284
- }
285
- const instruction = String(payload.instruction || "").trim();
286
- if (!instruction) {
287
- throw new Error("instruction is required");
288
- }
289
- if (options.revise) {
290
- const current = await readMemory(context, { path: targetPath }).catch(() => ({
291
- path: targetPath,
292
- text: "",
293
- }));
294
- const revised = readReviseResult(await options.revise({
295
- rootPath: context.workspace_path,
296
- path: targetPath,
297
- currentContent: current.text,
298
- instruction,
299
- evidence: String(payload.evidence || ""),
300
- }), targetPath);
301
- const written = await writeWikiPage(context, {
302
- path: revised.path,
303
- content: revised.content,
304
- tags: ["memory"],
305
- });
306
- const response = {
307
- path: written.path,
308
- mode: "revised",
309
- writtenChars: written.writtenChars,
310
- summary: revised.summary,
311
- };
312
- return { success: true, data: response };
313
- }
314
- const response = await appendMemoryRevision(context, payload);
315
- return { success: true, data: response };
316
- }
317
- catch (error) {
318
- return {
319
- success: false,
320
- error: String(error),
321
- };
322
- }
93
+ /** revise action。 */
94
+ export async function revise_memory_action(context, provider, input) {
95
+ return await run_provider_action(async () => await provider.revise({
96
+ ...input,
97
+ scope: create_memory_scope(context),
98
+ }));
323
99
  }
324
- /**
325
- * 把任意 payload 归一化为 search payload。
326
- */
327
- export function toSearchPayload(input) {
328
- return {
329
- query: String(input.query || ""),
330
- maxResults: typeof input.maxResults === "number"
331
- ? input.maxResults
332
- : typeof input.maxResults === "string"
333
- ? Number(input.maxResults)
334
- : MEMORY_DEFAULTS.maxResults,
335
- minScore: typeof input.minScore === "number"
336
- ? input.minScore
337
- : typeof input.minScore === "string"
338
- ? Number(input.minScore)
339
- : MEMORY_DEFAULTS.minScore,
340
- includeSources: typeof input.includeSources === "boolean"
341
- ? input.includeSources
342
- : typeof input.includeSources === "string"
343
- ? input.includeSources === "true"
344
- : undefined,
345
- };
100
+ /** forget action。 */
101
+ export async function forget_memory_action(context, provider, input) {
102
+ return await run_provider_action(async () => await provider.forget({
103
+ ...input,
104
+ scope: create_memory_scope(context),
105
+ }));
346
106
  }
347
107
  //# sourceMappingURL=Action.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Action.js","sourceRoot":"","sources":["../../src/memory/Action.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Action.js","sourceRoot":"","sources":["../../src/memory/Action.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,10 @@
2
2
  * Memory Plugin 导出入口。
3
3
  *
4
4
  * 关键点(中文)
5
- * - Index 只负责导出类实现。
5
+ * - Index 只负责导出 Memory Plugin 与默认实现。
6
6
  * - 真正运行时的 per-agent 实例由宿主显式创建并传给 Agent。
7
7
  */
8
8
  export { MemoryPlugin } from "./MemoryPlugin.js";
9
+ export { BuiltinMemoryProvider } from "./providers/BuiltinMemoryProvider.js";
10
+ export { FileMemoryStorageAdapter, get_default_file_memory_root_path, } from "./adapters/FileMemoryStorageAdapter.js";
9
11
  //# sourceMappingURL=Index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Index.d.ts","sourceRoot":"","sources":["../../src/memory/Index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"Index.d.ts","sourceRoot":"","sources":["../../src/memory/Index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EACL,wBAAwB,EACxB,iCAAiC,GAClC,MAAM,wCAAwC,CAAC"}
@@ -2,8 +2,10 @@
2
2
  * Memory Plugin 导出入口。
3
3
  *
4
4
  * 关键点(中文)
5
- * - Index 只负责导出类实现。
5
+ * - Index 只负责导出 Memory Plugin 与默认实现。
6
6
  * - 真正运行时的 per-agent 实例由宿主显式创建并传给 Agent。
7
7
  */
8
8
  export { MemoryPlugin } from "./MemoryPlugin.js";
9
+ export { BuiltinMemoryProvider } from "./providers/BuiltinMemoryProvider.js";
10
+ export { FileMemoryStorageAdapter, get_default_file_memory_root_path, } from "./adapters/FileMemoryStorageAdapter.js";
9
11
  //# sourceMappingURL=Index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Index.js","sourceRoot":"","sources":["../../src/memory/Index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"Index.js","sourceRoot":"","sources":["../../src/memory/Index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EACL,wBAAwB,EACxB,iCAAiC,GAClC,MAAM,wCAAwC,CAAC"}
@@ -1,51 +1,34 @@
1
1
  /**
2
- * MemoryPlugin:agent 的长期记忆 plugin
2
+ * MemoryPlugin:Agent 长期记忆的 provider-neutral facade
3
3
  *
4
- * 关键点(中文)
5
- * - 对外仍然是 MemoryPlugin,内部使用 LLM Wiki 方式组织知识。
6
- * - constructor 注入 digest/revise 能力,plugin 不绑定具体 LLM 服务。
7
- * - action 面向 agent 语义,而不是暴露底层文件写入细节。
4
+ * 职责说明(中文)
5
+ * - Agent 暴露稳定的 Memory actions 与 system 使用约束。
6
+ * - Agent/Session 上下文映射为结构化 Memory scope。
7
+ * - 将记忆形成、存储、召回、修订和删除委托给唯一 MemoryProvider。
8
+ *
9
+ * 边界说明(中文)
10
+ * - 不读取或拼接任何物理存储路径。
11
+ * - 不依赖 Workspace FileSystem,也不规定 Markdown、SQLite 或远程服务。
12
+ * - Provider 生命周期跟随当前 Plugin 实例,由 Agent 统一启动和释放。
8
13
  */
9
- import type { PluginContext } from "@downcity/agent";
10
- import type { PluginActions } from "@downcity/agent";
11
14
  import { BasePlugin } from "@downcity/agent";
12
- import { type MemoryRuntimeState } from "./runtime/Store.js";
13
- import type { MemoryPluginOptions } from "./types/Memory.js";
14
- /**
15
- * Memory plugin 类实现。
16
- */
15
+ import type { PluginActions, PluginContext } from "@downcity/agent";
16
+ import type { MemoryPluginOptions, MemoryProvider } from "../memory/types/Memory.js";
17
+ /** Agent 长期记忆 Plugin。 */
17
18
  export declare class MemoryPlugin extends BasePlugin {
18
- private readonly options;
19
- /**
20
- * plugin 名称。
21
- */
19
+ /** Plugin 稳定名称。 */
22
20
  readonly name = "memory";
23
- /**
24
- * 当前实例持有的 memory plugin state。
25
- */
26
- runtimeState: MemoryRuntimeState | null;
27
- /**
28
- * 创建 MemoryPlugin。
29
- */
30
- constructor(options?: MemoryPluginOptions);
31
- /**
32
- * 当前 plugin 的 system 文本提供器。
33
- */
21
+ /** 当前 Plugin 唯一绑定的 Memory Provider。 */
22
+ readonly provider: MemoryProvider;
23
+ constructor(options: MemoryPluginOptions);
24
+ /** 构建 provider-neutral Memory system 内容。 */
34
25
  system(context: PluginContext): Promise<string>;
35
- /**
36
- * 当前 plugin 生命周期。
37
- */
26
+ /** Provider 生命周期与当前 Agent Plugin 实例保持一致。 */
38
27
  readonly lifecycle: {
39
28
  start: (context: PluginContext) => Promise<void>;
40
29
  stop: () => Promise<void>;
41
30
  };
42
- /**
43
- * 当前 plugin action 定义表。
44
- */
31
+ /** Memory 对 Agent 暴露的稳定 Action 集合。 */
45
32
  readonly actions: PluginActions;
46
- /**
47
- * 获取或创建当前实例绑定的 memory plugin state。
48
- */
49
- private getOrCreateRuntimeState;
50
33
  }
51
34
  //# sourceMappingURL=MemoryPlugin.d.ts.map