@tachu/extensions 1.0.0-alpha.6 → 1.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -236
- package/README.md +53 -998
- package/README_ZH.md +52 -973
- package/dist/backends/file.d.ts +6 -6
- package/dist/backends/file.d.ts.map +1 -1
- package/dist/backends/file.js +12 -12
- package/dist/backends/file.js.map +1 -1
- package/dist/backends/terminal.d.ts +6 -6
- package/dist/backends/terminal.d.ts.map +1 -1
- package/dist/backends/terminal.js +9 -9
- package/dist/backends/terminal.js.map +1 -1
- package/dist/backends/web.d.ts +6 -6
- package/dist/backends/web.d.ts.map +1 -1
- package/dist/backends/web.js +8 -8
- package/dist/backends/web.js.map +1 -1
- package/dist/common/path.d.ts +14 -14
- package/dist/common/path.d.ts.map +1 -1
- package/dist/common/path.js +3 -3
- package/dist/common/process.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/mcp/sse-adapter.d.ts +38 -38
- package/dist/mcp/sse-adapter.d.ts.map +1 -1
- package/dist/mcp/sse-adapter.js +34 -34
- package/dist/mcp/sse-adapter.js.map +1 -1
- package/dist/mcp/stdio-adapter.d.ts +38 -38
- package/dist/mcp/stdio-adapter.d.ts.map +1 -1
- package/dist/mcp/stdio-adapter.js +34 -34
- package/dist/mcp/stdio-adapter.js.map +1 -1
- package/dist/memory/fs-memory-system.d.ts +199 -58
- package/dist/memory/fs-memory-system.d.ts.map +1 -1
- package/dist/memory/fs-memory-system.js +290 -74
- package/dist/memory/fs-memory-system.js.map +1 -1
- package/dist/memory/index.d.ts +3 -0
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +3 -0
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/projection-outbox.d.ts +69 -0
- package/dist/memory/projection-outbox.d.ts.map +1 -0
- package/dist/memory/projection-outbox.js +187 -0
- package/dist/memory/projection-outbox.js.map +1 -0
- package/dist/memory/projection-projector.d.ts +16 -0
- package/dist/memory/projection-projector.d.ts.map +1 -0
- package/dist/memory/projection-projector.js +56 -0
- package/dist/memory/projection-projector.js.map +1 -0
- package/dist/memory/projection-worker.d.ts +28 -0
- package/dist/memory/projection-worker.d.ts.map +1 -0
- package/dist/memory/projection-worker.js +84 -0
- package/dist/memory/projection-worker.js.map +1 -0
- package/dist/observability/jsonl-emitter.d.ts +25 -25
- package/dist/observability/jsonl-emitter.d.ts.map +1 -1
- package/dist/observability/jsonl-emitter.js +25 -25
- package/dist/observability/jsonl-emitter.js.map +1 -1
- package/dist/observability/otel-emitter.d.ts +23 -23
- package/dist/observability/otel-emitter.d.ts.map +1 -1
- package/dist/observability/otel-emitter.js +37 -28
- package/dist/observability/otel-emitter.js.map +1 -1
- package/dist/providers/anthropic.d.ts +39 -39
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +35 -35
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/mock.d.ts +33 -33
- package/dist/providers/mock.d.ts.map +1 -1
- package/dist/providers/mock.js +24 -24
- package/dist/providers/mock.js.map +1 -1
- package/dist/providers/openai.d.ts +51 -50
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +81 -46
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/qwen.d.ts +39 -38
- package/dist/providers/qwen.d.ts.map +1 -1
- package/dist/providers/qwen.js +27 -24
- package/dist/providers/qwen.js.map +1 -1
- package/dist/safety/default-gate.d.ts +35 -35
- package/dist/safety/default-gate.d.ts.map +1 -1
- package/dist/safety/default-gate.js +3 -3
- package/dist/safety/default-gate.js.map +1 -1
- package/dist/tools/_shared/web-client.d.ts +1 -1
- package/dist/tools/_shared/web-client.js +1 -1
- package/dist/tools/apply-patch/executor.js.map +1 -1
- package/dist/tools/fetch-url/executor.d.ts +2 -2
- package/dist/tools/fetch-url/executor.js +7 -7
- package/dist/tools/git-blame/executor.js.map +1 -1
- package/dist/tools/git-branch/executor.js +2 -2
- package/dist/tools/git-branch/executor.js.map +1 -1
- package/dist/tools/git-diff/executor.js.map +1 -1
- package/dist/tools/git-show/executor.js.map +1 -1
- package/dist/tools/git-status/executor.js.map +1 -1
- package/dist/tools/glob/executor.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list-dir/executor.js +1 -1
- package/dist/tools/list-dir/executor.js.map +1 -1
- package/dist/tools/read-file/executor.js +1 -1
- package/dist/tools/read-file/executor.js.map +1 -1
- package/dist/tools/run-shell/executor.js.map +1 -1
- package/dist/tools/run-tests/executor.js.map +1 -1
- package/dist/tools/run-typecheck/executor.js.map +1 -1
- package/dist/tools/search-code/executor.js +1 -1
- package/dist/tools/search-code/executor.js.map +1 -1
- package/dist/tools/shared.d.ts +9 -9
- package/dist/tools/web-fetch/errors.d.ts +2 -2
- package/dist/tools/web-fetch/errors.js +3 -3
- package/dist/tools/web-fetch/errors.js.map +1 -1
- package/dist/tools/web-fetch/executor.d.ts +2 -2
- package/dist/tools/web-fetch/executor.js +2 -2
- package/dist/tools/web-fetch/types.d.ts +7 -7
- package/dist/tools/web-fetch/types.d.ts.map +1 -1
- package/dist/tools/web-fetch/types.js +1 -1
- package/dist/tools/web-search/errors.d.ts +3 -3
- package/dist/tools/web-search/errors.js +3 -3
- package/dist/tools/web-search/executor.d.ts +2 -2
- package/dist/tools/web-search/executor.js +2 -2
- package/dist/tools/web-search/types.d.ts +4 -4
- package/dist/tools/web-search/types.d.ts.map +1 -1
- package/dist/tools/web-search/types.js +1 -1
- package/dist/transformers/document-to-text.d.ts +11 -11
- package/dist/transformers/document-to-text.d.ts.map +1 -1
- package/dist/transformers/document-to-text.js +11 -11
- package/dist/transformers/document-to-text.js.map +1 -1
- package/dist/transformers/image-to-text.d.ts +15 -15
- package/dist/transformers/image-to-text.d.ts.map +1 -1
- package/dist/transformers/image-to-text.js +15 -15
- package/dist/transformers/image-to-text.js.map +1 -1
- package/dist/vector/index.d.ts +4 -2
- package/dist/vector/index.d.ts.map +1 -1
- package/dist/vector/index.js +2 -2
- package/dist/vector/index.js.map +1 -1
- package/dist/vector/local-fs-index.d.ts +59 -0
- package/dist/vector/local-fs-index.d.ts.map +1 -0
- package/dist/vector/local-fs-index.js +216 -0
- package/dist/vector/local-fs-index.js.map +1 -0
- package/dist/vector/qdrant.d.ts +11 -73
- package/dist/vector/qdrant.d.ts.map +1 -1
- package/dist/vector/qdrant.js +29 -164
- package/dist/vector/qdrant.js.map +1 -1
- package/package.json +19 -4
- package/dist/vector/local-fs.d.ts +0 -81
- package/dist/vector/local-fs.d.ts.map +0 -1
- package/dist/vector/local-fs.js +0 -161
- package/dist/vector/local-fs.js.map +0 -1
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { InMemoryMemorySystem, type AdapterCallContext, type ContextWindow, type MemoryEntry, type MemorySystem } from "@tachu/core";
|
|
2
|
+
import { ProjectionOutbox } from "./projection-outbox";
|
|
3
|
+
import { ProjectionWorker } from "./projection-worker";
|
|
2
4
|
/**
|
|
3
5
|
* `FsMemorySystem` 构造依赖(来自 `@tachu/core` 的 `MemorySystemFactoryDeps`)。
|
|
4
6
|
*
|
|
@@ -7,20 +9,35 @@ import { InMemoryMemorySystem, type AdapterCallContext, type ContextWindow, type
|
|
|
7
9
|
*/
|
|
8
10
|
export interface FsMemorySystemOptions {
|
|
9
11
|
/**
|
|
10
|
-
|
|
11
|
-
|
|
12
|
+
* 持久化根目录,每个 session 对应 `<persistDir>/<sanitizedId>.jsonl`。
|
|
13
|
+
*/
|
|
12
14
|
persistDir: string;
|
|
13
15
|
/**
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
* 内部组合的 `InMemoryMemorySystem` 实例。由调用方(通常为 engine-factory
|
|
17
|
+
* 通过 core 的 factory 回调)构造好后传入,以复用 core 的 tokenizer /
|
|
18
|
+
* modelRouter / providers / vectorStore 等运行时依赖。
|
|
19
|
+
*/
|
|
18
20
|
inner: InMemoryMemorySystem;
|
|
19
21
|
/**
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
* 压缩触发阈值(0-1)。默认读 `config.memory.compressionThreshold`。
|
|
23
|
+
* 超过 `contextTokenLimit * threshold` 时在 `append` 中触发 `compress`。
|
|
24
|
+
*/
|
|
23
25
|
compressionThreshold: number;
|
|
26
|
+
/**
|
|
27
|
+
* 可选的 projection outbox。若提供,`archive()` 会通过 outbox
|
|
28
|
+
* 跟踪每条投递的状态(pending/retrying/indexed/failed/dead),`pendingProjection`
|
|
29
|
+
* 返回真实状态而非常量模板;启动时自动 `recover()` 陈旧 retrying 项。
|
|
30
|
+
* 不提供时退化到旧的"始终 pending"行为,保持向后兼容。
|
|
31
|
+
*/
|
|
32
|
+
projectionOutbox?: ProjectionOutbox | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* optional embed+vector projection callback for {@link ProjectionWorker}.
|
|
35
|
+
* When set, {@link createProjectionWorker} uses this instead of `inner.project`.
|
|
36
|
+
*/
|
|
37
|
+
projectionProject?: (sessionId: string, refs: readonly string[], signal: AbortSignal) => Promise<import("./projection-worker").ProjectionWorkerProjectResult[] | void>;
|
|
38
|
+
}
|
|
39
|
+
export interface FsArchiveOptions {
|
|
40
|
+
awaitProjection?: boolean | undefined;
|
|
24
41
|
}
|
|
25
42
|
/**
|
|
26
43
|
* 将任意 session ID 标准化为文件名安全形式。
|
|
@@ -39,13 +56,13 @@ export declare function sanitizeSessionId(raw: string): string;
|
|
|
39
56
|
* ## 职责
|
|
40
57
|
*
|
|
41
58
|
* - 每次 `append` 先把单条 entry 以 append-only JSON line 写入
|
|
42
|
-
*
|
|
43
|
-
*
|
|
59
|
+
* `<persistDir>/<sid>.jsonl`(crash-safe),再同步进内部
|
|
60
|
+
* `InMemoryMemorySystem` 的运行时 window
|
|
44
61
|
* - 首次 `load(sid)` 命中时从磁盘 hydrate 上次进程遗留的历史,注入内部
|
|
45
|
-
*
|
|
62
|
+
* `InMemoryMemorySystem`(走 public `hydrate()`,旁路 per-entry compress 触发)
|
|
46
63
|
* - `compress()` 完成后 atomic rewrite 持久化文件,保证"盘 = 内存"一致
|
|
47
64
|
* - `recall` / `archive` / `getSize` / `trim` 全部代理内部 `InMemoryMemorySystem`
|
|
48
|
-
*
|
|
65
|
+
* (只要 load 阶段已 hydrate,这些读路径天然拿到跨进程数据)
|
|
49
66
|
*
|
|
50
67
|
* ## 并发
|
|
51
68
|
*
|
|
@@ -56,92 +73,216 @@ export declare function sanitizeSessionId(raw: string): string;
|
|
|
56
73
|
*
|
|
57
74
|
* - `config.memory.persistDir`(本类)= 热路径:每次 append 即落盘,用于跨进程 `--resume`
|
|
58
75
|
* - `config.memory.archivePath`(内部 `InMemoryMemorySystem` 拥有)= 冷路径:
|
|
59
|
-
*
|
|
76
|
+
* 仅在 `compress()` 时一次性追加到单个大 jsonl,供长期记忆向量召回
|
|
60
77
|
*
|
|
61
78
|
* 两者**不重叠**,保留现有 archivePath 语义不动。
|
|
62
79
|
*/
|
|
80
|
+
export type FsProjectionStatus = {
|
|
81
|
+
kind: "pending";
|
|
82
|
+
ref: string;
|
|
83
|
+
reason: string;
|
|
84
|
+
createdAt: number;
|
|
85
|
+
} | {
|
|
86
|
+
kind: "indexed";
|
|
87
|
+
ref: string;
|
|
88
|
+
indexedAt: number;
|
|
89
|
+
adapter: string;
|
|
90
|
+
} | {
|
|
91
|
+
kind: "failed";
|
|
92
|
+
ref: string;
|
|
93
|
+
error: string;
|
|
94
|
+
retryable: boolean;
|
|
95
|
+
attempts: number;
|
|
96
|
+
} | {
|
|
97
|
+
kind: "stale";
|
|
98
|
+
ref: string;
|
|
99
|
+
reason: string;
|
|
100
|
+
};
|
|
101
|
+
export interface FsMemorySummary {
|
|
102
|
+
id: string;
|
|
103
|
+
sessionId: string;
|
|
104
|
+
sourceEntryIds: string[];
|
|
105
|
+
sourceRange: {
|
|
106
|
+
fromTs: number;
|
|
107
|
+
toTs: number;
|
|
108
|
+
};
|
|
109
|
+
content: string;
|
|
110
|
+
method: "llm" | "head-middle-tail" | "manual";
|
|
111
|
+
model?: string | undefined;
|
|
112
|
+
createdAt: number;
|
|
113
|
+
}
|
|
114
|
+
export interface FsSessionCheckpoint {
|
|
115
|
+
id: string;
|
|
116
|
+
createdAt: number;
|
|
117
|
+
state?: unknown | undefined;
|
|
118
|
+
}
|
|
119
|
+
export interface FsSessionMemorySnapshot {
|
|
120
|
+
meta: {
|
|
121
|
+
id: string;
|
|
122
|
+
updatedAt: number;
|
|
123
|
+
entryCount: number;
|
|
124
|
+
};
|
|
125
|
+
hotLog: MemoryEntry[];
|
|
126
|
+
summaries: FsMemorySummary[];
|
|
127
|
+
archiveRefs: Array<{
|
|
128
|
+
id: string;
|
|
129
|
+
path?: string | undefined;
|
|
130
|
+
entryIds: string[];
|
|
131
|
+
createdAt: number;
|
|
132
|
+
}>;
|
|
133
|
+
projectionStatus: FsProjectionStatus[];
|
|
134
|
+
budget: {
|
|
135
|
+
tokenLimit?: number | undefined;
|
|
136
|
+
tokenUsed?: number | undefined;
|
|
137
|
+
};
|
|
138
|
+
checkpoint?: FsSessionCheckpoint | undefined;
|
|
139
|
+
}
|
|
140
|
+
export interface FsMemoryViewRequest {
|
|
141
|
+
kind: "hot-log" | "summary" | "export" | "recall-corpus" | "sub-agent-slice";
|
|
142
|
+
limit?: number | undefined;
|
|
143
|
+
since?: number | undefined;
|
|
144
|
+
includeArchived?: boolean | undefined;
|
|
145
|
+
}
|
|
146
|
+
export interface FsMemoryView {
|
|
147
|
+
kind: FsMemoryViewRequest["kind"];
|
|
148
|
+
entries: MemoryEntry[];
|
|
149
|
+
summaries: FsMemorySummary[];
|
|
150
|
+
projectionStatus: FsProjectionStatus[];
|
|
151
|
+
}
|
|
63
152
|
export declare class FsMemorySystem implements MemorySystem {
|
|
64
153
|
private readonly persistDir;
|
|
65
154
|
private readonly inner;
|
|
66
155
|
private readonly compressionThreshold;
|
|
67
156
|
private readonly hydrated;
|
|
68
157
|
private readonly pending;
|
|
158
|
+
private readonly checkpoints;
|
|
159
|
+
private readonly outbox?;
|
|
160
|
+
private readonly projectionProject?;
|
|
161
|
+
private readonly recovered;
|
|
69
162
|
/**
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
163
|
+
* 构造文件持久化 MemorySystem。
|
|
164
|
+
*
|
|
165
|
+
* @param options 参见 {@link FsMemorySystemOptions}
|
|
166
|
+
*/
|
|
74
167
|
constructor(options: FsMemorySystemOptions);
|
|
75
168
|
/**
|
|
76
|
-
|
|
77
|
-
|
|
169
|
+
* @inheritdoc
|
|
170
|
+
*/
|
|
78
171
|
load(sessionId: string, ctx: AdapterCallContext): Promise<ContextWindow>;
|
|
79
172
|
/**
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
173
|
+
* @inheritdoc
|
|
174
|
+
*
|
|
175
|
+
* 流程:
|
|
176
|
+
* 1. 确保 session 已 hydrate(使 window 与磁盘一致)
|
|
177
|
+
* 2. append-only 将 entry 序列化为单行 JSON 落盘(崩溃安全;即便本次进程 crash,
|
|
178
|
+
* 磁盘文件仍是合法 jsonl 的前缀)
|
|
179
|
+
* 3. 将 entry 通过 `inner.hydrate()` 注入内存 window(旁路 per-entry compress)
|
|
180
|
+
* 4. 手动检查 tokenCount 是否越过阈值;若越线:
|
|
181
|
+
* - `inner.compress(sid)` 触发 LLM 摘要
|
|
182
|
+
* - atomic rewrite jsonl,保持盘与内存一致
|
|
183
|
+
*/
|
|
91
184
|
append(sessionId: string, entry: MemoryEntry, ctx: AdapterCallContext): Promise<void>;
|
|
185
|
+
appendEntries(sessionId: string, entries: MemoryEntry[], ctx: AdapterCallContext): Promise<{
|
|
186
|
+
appended: number;
|
|
187
|
+
projectionStatus: FsProjectionStatus[];
|
|
188
|
+
}>;
|
|
92
189
|
/**
|
|
93
|
-
|
|
94
|
-
|
|
190
|
+
* @inheritdoc
|
|
191
|
+
*/
|
|
95
192
|
compress(sessionId: string): Promise<void>;
|
|
96
193
|
/**
|
|
97
|
-
|
|
98
|
-
|
|
194
|
+
* @inheritdoc
|
|
195
|
+
*/
|
|
99
196
|
recall(sessionId: string, query: string, topK?: number): Promise<MemoryEntry[]>;
|
|
100
197
|
/**
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
198
|
+
* @inheritdoc
|
|
199
|
+
*/
|
|
200
|
+
loadFull(sessionId: string): Promise<MemoryEntry[]>;
|
|
201
|
+
loadSession(sessionId: string, ctx: AdapterCallContext): Promise<FsSessionMemorySnapshot>;
|
|
202
|
+
loadView(sessionId: string, view: FsMemoryViewRequest, ctx: AdapterCallContext): Promise<FsMemoryView>;
|
|
203
|
+
compact(sessionId: string, _policy: {
|
|
204
|
+
targetTokens?: number;
|
|
205
|
+
method?: "llm" | "head-middle-tail" | "manual";
|
|
206
|
+
}, _ctx: AdapterCallContext): Promise<{
|
|
207
|
+
summaries: FsMemorySummary[];
|
|
208
|
+
archiveRefs: FsSessionMemorySnapshot["archiveRefs"];
|
|
209
|
+
}>;
|
|
210
|
+
checkpoint(sessionId: string, checkpoint: FsSessionCheckpoint, _ctx: AdapterCallContext): Promise<void>;
|
|
211
|
+
/**
|
|
212
|
+
* @inheritdoc
|
|
213
|
+
*
|
|
214
|
+
* 当 host 注入 `projectionOutbox` 时,每条 entry 走 outbox 状态机
|
|
215
|
+
* (pending → retrying → indexed/failed/dead),并在首次 archive 该 session 时
|
|
216
|
+
* 自动 `recover()` 残留的陈旧 retrying 项。
|
|
217
|
+
*
|
|
218
|
+
* `awaitProjection=false` 时只写冷归档并入队 projection,由 `ProjectionWorker`
|
|
219
|
+
* 后台 flush;默认保持旧同步语义,等待本轮 projection 完成后返回。
|
|
220
|
+
*/
|
|
221
|
+
archive(sessionId: string, options?: FsArchiveOptions): Promise<void>;
|
|
222
|
+
/**
|
|
223
|
+
* Construct a {@link ProjectionWorker} that drains the outbox via the
|
|
224
|
+
* host-injected `projectionProject` callback.
|
|
225
|
+
*
|
|
226
|
+
* **Fail-closed contract:** when `projectionOutbox` is
|
|
227
|
+
* enabled, `projectionProject` MUST be provided. The legacy fallback to
|
|
228
|
+
* `InMemoryMemorySystem.project()` (which forwarded raw `string` content
|
|
229
|
+
* straight to `VectorStore.upsert(id, text, { content })` and bypassed the
|
|
230
|
+
* `EmbeddingRuntime` / `VectorIndexAdapter` stack) has been removed — any
|
|
231
|
+
* production host that forgets to wire the projector now crashes loudly
|
|
232
|
+
* instead of silently re-introducing the deprecated text-embed path.
|
|
233
|
+
*/
|
|
234
|
+
createProjectionWorker(options?: {
|
|
235
|
+
intervalMs?: number | undefined;
|
|
236
|
+
}): ProjectionWorker;
|
|
104
237
|
/**
|
|
105
|
-
|
|
106
|
-
|
|
238
|
+
* @inheritdoc
|
|
239
|
+
*/
|
|
107
240
|
getSize(sessionId: string): Promise<{
|
|
108
241
|
entries: number;
|
|
109
242
|
tokens: number;
|
|
110
243
|
}>;
|
|
111
244
|
/**
|
|
112
|
-
|
|
113
|
-
|
|
245
|
+
* @inheritdoc
|
|
246
|
+
*/
|
|
114
247
|
trim(sessionId: string, options?: {
|
|
115
248
|
keepHead?: number;
|
|
116
249
|
keepTail?: number;
|
|
117
250
|
}): Promise<void>;
|
|
118
251
|
/**
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
252
|
+
* @inheritdoc
|
|
253
|
+
*
|
|
254
|
+
* 先清内存 window,再幂等删除磁盘 jsonl。未找到文件视为 no-op。
|
|
255
|
+
*/
|
|
123
256
|
clear(sessionId: string): Promise<void>;
|
|
257
|
+
private pendingProjection;
|
|
258
|
+
private snapshotOutboxByRef;
|
|
259
|
+
private projectionStatusFor;
|
|
260
|
+
/** archiveRefs 持久化路径。 */
|
|
261
|
+
private archiveRefsPathFor;
|
|
262
|
+
private readArchiveRefs;
|
|
263
|
+
private writeArchiveRefs;
|
|
264
|
+
private extractSummaries;
|
|
124
265
|
/**
|
|
125
|
-
|
|
126
|
-
|
|
266
|
+
* 获取某 session 的持久化文件绝对 / 相对路径(便于外层 CLI 做迁移、/history 展示)。
|
|
267
|
+
*/
|
|
127
268
|
pathFor(sessionId: string): string;
|
|
128
269
|
/**
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
270
|
+
* 从磁盘读取 session 的原始 entries 快照(不经 inner hydrate)。
|
|
271
|
+
*
|
|
272
|
+
* 外层 CLI 可借此在 `/history` / `/export` 命令中直接列出原始条目顺序,
|
|
273
|
+
* 不必先 `load` 触发 hydrate 副作用。
|
|
274
|
+
*/
|
|
134
275
|
readRaw(sessionId: string): Promise<MemoryEntry[]>;
|
|
135
276
|
private parseJsonl;
|
|
136
277
|
private hydrateIfNeeded;
|
|
137
278
|
private writeJsonlLine;
|
|
138
279
|
private rewriteJsonl;
|
|
139
280
|
/**
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
281
|
+
* 串行化某 session 的关键操作 —— 通过 promise chain 保证同一 sessionId 上的
|
|
282
|
+
* load / append / compress / trim 不交错。
|
|
283
|
+
*
|
|
284
|
+
* 失败不阻塞队列:下一个 task 无论前一个 resolve 还是 reject 都会启动。
|
|
285
|
+
*/
|
|
145
286
|
private serialize;
|
|
146
287
|
}
|
|
147
288
|
//# sourceMappingURL=fs-memory-system.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs-memory-system.d.ts","sourceRoot":"","sources":["../../src/memory/fs-memory-system.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"fs-memory-system.d.ts","sourceRoot":"","sources":["../../src/memory/fs-memory-system.ts"],"names":[],"mappings":"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"}
|