@zooique/memora 0.1.0 → 0.2.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/dist/agent/agent.d.ts +155 -23
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +386 -124
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/assembler.d.ts +8 -2
- package/dist/agent/assembler.d.ts.map +1 -1
- package/dist/agent/assembler.js +17 -6
- package/dist/agent/assembler.js.map +1 -1
- package/dist/agent/builtinToolHandlers.d.ts +1 -1
- package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
- package/dist/agent/builtinToolHandlers.js +5 -3
- package/dist/agent/builtinToolHandlers.js.map +1 -1
- package/dist/agent/builtinTools.d.ts +1 -1
- package/dist/agent/builtinTools.js +2 -2
- package/dist/agent/builtinTools.js.map +1 -1
- package/dist/agent/constants.d.ts +27 -6
- package/dist/agent/constants.d.ts.map +1 -1
- package/dist/agent/constants.js +27 -6
- package/dist/agent/constants.js.map +1 -1
- package/dist/agent/contextManager.d.ts +35 -9
- package/dist/agent/contextManager.d.ts.map +1 -1
- package/dist/agent/contextManager.js +138 -25
- package/dist/agent/contextManager.js.map +1 -1
- package/dist/agent/loop.d.ts +41 -11
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +143 -61
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/managers/archiveCoordinator.d.ts +100 -0
- package/dist/agent/managers/archiveCoordinator.d.ts.map +1 -0
- package/dist/agent/managers/archiveCoordinator.js +127 -0
- package/dist/agent/managers/archiveCoordinator.js.map +1 -0
- package/dist/agent/managers/autoConfigRefiner.d.ts.map +1 -1
- package/dist/agent/managers/autoConfigRefiner.js +1 -1
- package/dist/agent/managers/autoConfigRefiner.js.map +1 -1
- package/dist/agent/managers/configManager.d.ts +13 -2
- package/dist/agent/managers/configManager.d.ts.map +1 -1
- package/dist/agent/managers/configManager.js +13 -5
- package/dist/agent/managers/configManager.js.map +1 -1
- package/dist/agent/managers/insightExtractor.d.ts +36 -3
- package/dist/agent/managers/insightExtractor.d.ts.map +1 -1
- package/dist/agent/managers/insightExtractor.js +48 -11
- package/dist/agent/managers/insightExtractor.js.map +1 -1
- package/dist/agent/managers/memoryAdvisor.d.ts +4 -2
- package/dist/agent/managers/memoryAdvisor.d.ts.map +1 -1
- package/dist/agent/managers/memoryAdvisor.js +6 -4
- package/dist/agent/managers/memoryAdvisor.js.map +1 -1
- package/dist/agent/managers/memoryDecayScheduler.d.ts +113 -0
- package/dist/agent/managers/memoryDecayScheduler.d.ts.map +1 -0
- package/dist/agent/managers/memoryDecayScheduler.js +134 -0
- package/dist/agent/managers/memoryDecayScheduler.js.map +1 -0
- package/dist/agent/managers/memoryInspector.d.ts +70 -10
- package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
- package/dist/agent/managers/memoryInspector.js +97 -23
- package/dist/agent/managers/memoryInspector.js.map +1 -1
- package/dist/agent/managers/sessionArchiver.d.ts +77 -0
- package/dist/agent/managers/sessionArchiver.d.ts.map +1 -0
- package/dist/agent/managers/sessionArchiver.js +175 -0
- package/dist/agent/managers/sessionArchiver.js.map +1 -0
- package/dist/agent/managers/sessionManager.d.ts +10 -0
- package/dist/agent/managers/sessionManager.d.ts.map +1 -1
- package/dist/agent/managers/sessionManager.js +26 -5
- package/dist/agent/managers/sessionManager.js.map +1 -1
- package/dist/agent/managers/workProjection.d.ts +1 -1
- package/dist/agent/managers/workProjection.d.ts.map +1 -1
- package/dist/agent/managers/workProjection.js +13 -10
- package/dist/agent/managers/workProjection.js.map +1 -1
- package/dist/agent/messageHistory.d.ts +1 -22
- package/dist/agent/messageHistory.d.ts.map +1 -1
- package/dist/agent/messageHistory.js +3 -19
- package/dist/agent/messageHistory.js.map +1 -1
- package/dist/agent/toolExecutor.d.ts +5 -18
- package/dist/agent/toolExecutor.d.ts.map +1 -1
- package/dist/agent/toolExecutor.js +7 -7
- package/dist/agent/toolExecutor.js.map +1 -1
- package/dist/agent/tracer.d.ts +8 -1
- package/dist/agent/tracer.d.ts.map +1 -1
- package/dist/agent/tracer.js +8 -1
- package/dist/agent/tracer.js.map +1 -1
- package/dist/agent/types.d.ts +29 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/{managers/userFactExtractor.d.ts → userFactExtractor.d.ts} +2 -2
- package/dist/agent/userFactExtractor.d.ts.map +1 -0
- package/dist/agent/userFactExtractor.js.map +1 -0
- package/dist/config/loader.d.ts +4 -4
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +11 -2
- package/dist/config/loader.js.map +1 -1
- package/dist/eval/evalTypes.js +1 -1
- package/dist/eval/evalTypes.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/llm/embedding.d.ts.map +1 -1
- package/dist/llm/embedding.js +8 -6
- package/dist/llm/embedding.js.map +1 -1
- package/dist/llm/factory.d.ts.map +1 -1
- package/dist/llm/factory.js +2 -1
- package/dist/llm/factory.js.map +1 -1
- package/dist/llm/openaiCompatible.d.ts +9 -0
- package/dist/llm/openaiCompatible.d.ts.map +1 -1
- package/dist/llm/openaiCompatible.js +77 -33
- package/dist/llm/openaiCompatible.js.map +1 -1
- package/dist/llm/provider.d.ts +17 -3
- package/dist/llm/provider.d.ts.map +1 -1
- package/dist/llm/provider.js +6 -2
- package/dist/llm/provider.js.map +1 -1
- package/dist/logging/logger.d.ts.map +1 -1
- package/dist/logging/logger.js +25 -9
- package/dist/logging/logger.js.map +1 -1
- package/dist/memory/hybridMerge.d.ts +54 -0
- package/dist/memory/hybridMerge.d.ts.map +1 -0
- package/dist/memory/hybridMerge.js +36 -0
- package/dist/memory/hybridMerge.js.map +1 -0
- package/dist/memory/inMemoryStorage.d.ts +90 -15
- package/dist/memory/inMemoryStorage.d.ts.map +1 -1
- package/dist/memory/inMemoryStorage.js +179 -28
- package/dist/memory/inMemoryStorage.js.map +1 -1
- package/dist/memory/loader.js +1 -1
- package/dist/memory/loader.js.map +1 -1
- package/dist/memory/projectManager.d.ts +34 -5
- package/dist/memory/projectManager.d.ts.map +1 -1
- package/dist/memory/projectManager.js +98 -62
- package/dist/memory/projectManager.js.map +1 -1
- package/dist/memory/recall.d.ts +7 -18
- package/dist/memory/recall.d.ts.map +1 -1
- package/dist/memory/recall.js +14 -19
- package/dist/memory/recall.js.map +1 -1
- package/dist/memory/storageInterface.d.ts +81 -14
- package/dist/memory/storageInterface.d.ts.map +1 -1
- package/dist/memory/store.js +1 -1
- package/dist/memory/store.js.map +1 -1
- package/dist/memory/types.d.ts +7 -1
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/memory/types.js +5 -1
- package/dist/memory/types.js.map +1 -1
- package/dist/memory/userProfile.d.ts +6 -6
- package/dist/memory/userProfile.d.ts.map +1 -1
- package/dist/memory/userProfile.js +20 -15
- package/dist/memory/userProfile.js.map +1 -1
- package/dist/memory/vectorStore.d.ts +35 -0
- package/dist/memory/vectorStore.d.ts.map +1 -1
- package/dist/memory/vectorStore.js +111 -2
- package/dist/memory/vectorStore.js.map +1 -1
- package/dist/persona/personaManager.d.ts +17 -4
- package/dist/persona/personaManager.d.ts.map +1 -1
- package/dist/persona/personaManager.js +44 -12
- package/dist/persona/personaManager.js.map +1 -1
- package/dist/security/pathGuard.d.ts +29 -7
- package/dist/security/pathGuard.d.ts.map +1 -1
- package/dist/security/pathGuard.js +148 -81
- package/dist/security/pathGuard.js.map +1 -1
- package/dist/skill/skillManager.d.ts +15 -0
- package/dist/skill/skillManager.d.ts.map +1 -1
- package/dist/skill/skillManager.js +25 -3
- package/dist/skill/skillManager.js.map +1 -1
- package/dist/skill/types.d.ts +7 -1
- package/dist/skill/types.d.ts.map +1 -1
- package/dist/utils/errors.d.ts +26 -7
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +10 -18
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/eventEmitter.d.ts +9 -2
- package/dist/utils/eventEmitter.d.ts.map +1 -1
- package/dist/utils/eventEmitter.js +1 -1
- package/dist/utils/eventEmitter.js.map +1 -1
- package/dist/utils/frontmatter.d.ts +8 -1
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +14 -3
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/path.d.ts +5 -1
- package/dist/utils/path.d.ts.map +1 -1
- package/dist/utils/path.js +5 -1
- package/dist/utils/path.js.map +1 -1
- package/dist/utils/safeTimer.d.ts +19 -0
- package/dist/utils/safeTimer.d.ts.map +1 -1
- package/dist/utils/safeTimer.js +27 -0
- package/dist/utils/safeTimer.js.map +1 -1
- package/dist/utils/segmenter.d.ts +0 -12
- package/dist/utils/segmenter.d.ts.map +1 -1
- package/dist/utils/segmenter.js +8 -3
- package/dist/utils/segmenter.js.map +1 -1
- package/dist/utils/strings.d.ts +1 -1
- package/dist/utils/strings.d.ts.map +1 -1
- package/dist/utils/strings.js +4 -2
- package/dist/utils/strings.js.map +1 -1
- package/package.json +1 -1
- package/dist/agent/managers/userFactExtractor.d.ts.map +0 -1
- package/dist/agent/managers/userFactExtractor.js.map +0 -1
- /package/dist/agent/{managers/userFactExtractor.js → userFactExtractor.js} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* 项目管理器 —
|
|
2
|
+
* 项目管理器 — 多项目并发
|
|
3
3
|
*
|
|
4
4
|
* 核心职责:
|
|
5
5
|
* - 管理项目注册表(~/.memora/projects.json)
|
|
@@ -29,9 +29,10 @@ import { FileStore } from '../memory/store.js';
|
|
|
29
29
|
import { InMemoryStorage } from '../memory/inMemoryStorage.js';
|
|
30
30
|
import { MemoryLoader } from '../memory/loader.js';
|
|
31
31
|
import { logger } from '../logging/logger.js';
|
|
32
|
-
import { toError } from '../utils/
|
|
32
|
+
import { toError } from '../utils/toError.js';
|
|
33
33
|
import { expandHome } from '../utils/path.js';
|
|
34
34
|
import { SOURCE_LABELS } from '../memory/types.js';
|
|
35
|
+
import { nowIso } from '../utils/time.js';
|
|
35
36
|
// ─── QC-24 类型守卫 ─────────────────────────────────────
|
|
36
37
|
// 对不可信磁盘文件 JSON.parse 结果进行运行时校验,替代 `as` 类型断言
|
|
37
38
|
/**
|
|
@@ -103,7 +104,7 @@ export class ProjectManager {
|
|
|
103
104
|
currentLockPath = null;
|
|
104
105
|
/** 外部注入的存储实例(可选,不传则内部创建 InMemoryStorage 兜底) */
|
|
105
106
|
externalStorage;
|
|
106
|
-
/**
|
|
107
|
+
/** SecurityGuard 工厂函数(由 Agent 层注入) */
|
|
107
108
|
createSecurityGuard;
|
|
108
109
|
constructor(options) {
|
|
109
110
|
const { dataDir, storage, registryDir, createSecurityGuard } = options;
|
|
@@ -114,7 +115,7 @@ export class ProjectManager {
|
|
|
114
115
|
this.registryPath = join(registryHome, 'projects.json');
|
|
115
116
|
// 保存外部注入的存储实例(宿主项目注入时使用)
|
|
116
117
|
this.externalStorage = storage ?? null;
|
|
117
|
-
//
|
|
118
|
+
// 保存 SecurityGuard 工厂函数
|
|
118
119
|
this.createSecurityGuard = createSecurityGuard;
|
|
119
120
|
}
|
|
120
121
|
/**
|
|
@@ -151,76 +152,33 @@ export class ProjectManager {
|
|
|
151
152
|
*
|
|
152
153
|
* memora.db 是 Agent 级共享资源,不随项目切换重建。
|
|
153
154
|
*
|
|
155
|
+
* 主体编排(关闭旧项目 + 锁 + 错误回滚)+ loadAllResources(两层加载)
|
|
156
|
+
* + buildProjectContext(上下文构建)三个子方法分工。
|
|
157
|
+
*
|
|
154
158
|
* @param projectPath 项目根目录
|
|
155
159
|
* @param projectName 项目名称(可选,默认取目录名)
|
|
156
160
|
* @param configDir Agent 级配置目录(personas/rules/skills/tools)
|
|
157
161
|
*/
|
|
158
162
|
async initProject(projectPath, projectName, configDir) {
|
|
159
|
-
//
|
|
163
|
+
// 1) 关闭旧项目(释放旧项目锁,但不关 Agent 级 DB)
|
|
160
164
|
if (this.currentProjectPath) {
|
|
161
165
|
await this.closeProject();
|
|
162
166
|
}
|
|
167
|
+
// 2) 解析 memoraDir + 获取项目级锁
|
|
163
168
|
const memoraDir = this.resolveMemoraDir(projectPath);
|
|
164
|
-
// 获取锁文件(项目级锁,防止同项目并发)
|
|
165
169
|
await this.acquireLock(memoraDir);
|
|
166
170
|
this.currentProjectPath = projectPath;
|
|
167
171
|
this.currentLockPath = join(memoraDir, '.lock');
|
|
168
|
-
//
|
|
172
|
+
// 后续步骤失败时释放锁并重置状态,避免锁文件残留导致下次启动检测失败
|
|
169
173
|
try {
|
|
170
|
-
//
|
|
174
|
+
// 3) 确保项目目录 + 加载两层资源
|
|
171
175
|
await mkdir(memoraDir, { recursive: true });
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
const loadResult = { loaded: 0, skipped: 0, errors: [] };
|
|
176
|
-
// 1) 项目级 FileStore:扫描 projectPath/.memora/ 下的 rules/ + skills/
|
|
177
|
-
const projectFileStore = new FileStore(memoraDir);
|
|
178
|
-
const projectLoader = new MemoryLoader(projectFileStore, index);
|
|
179
|
-
const projectResult = await projectLoader.loadAllToIndex();
|
|
180
|
-
loadResult.loaded += projectResult.loaded;
|
|
181
|
-
loadResult.skipped += projectResult.skipped;
|
|
182
|
-
loadResult.errors.push(...projectResult.errors);
|
|
183
|
-
// 2) Agent 级 FileStore:扫描 configDir 下的所有配置(rules/skills/personas/tools)
|
|
184
|
-
if (configDir) {
|
|
185
|
-
const configFileStore = new FileStore(configDir);
|
|
186
|
-
const configLoader = new MemoryLoader(configFileStore, index);
|
|
187
|
-
const configResult = await configLoader.loadAllToIndex();
|
|
188
|
-
loadResult.loaded += configResult.loaded;
|
|
189
|
-
loadResult.skipped += configResult.skipped;
|
|
190
|
-
loadResult.errors.push(...configResult.errors);
|
|
191
|
-
}
|
|
192
|
-
// bootstrap 过滤:按 source 获取 rule + skill 必召记忆(跳过 persona,由 PersonaManager 管理)
|
|
193
|
-
const rules = index.getBySource(SOURCE_LABELS.RULE);
|
|
194
|
-
const skills = index.getBySource(SOURCE_LABELS.SKILL);
|
|
195
|
-
const bootstrapMemories = [...rules, ...skills];
|
|
196
|
-
// A-004: 安全守卫由 Agent 层注入的工厂函数创建,解除 memory→security 反向依赖
|
|
197
|
-
const security = this.createSecurityGuard
|
|
198
|
-
? this.createSecurityGuard(projectPath, memoraDir, configDir, this.agentDataDir)
|
|
199
|
-
: null;
|
|
200
|
-
// 注册到项目表
|
|
201
|
-
const name = projectName || this.inferProjectName(projectPath);
|
|
202
|
-
this.registerProject(projectPath, name);
|
|
203
|
-
logger.info({
|
|
204
|
-
projectPath,
|
|
205
|
-
projectName: name,
|
|
206
|
-
memoraDir,
|
|
207
|
-
loaded: loadResult.loaded,
|
|
208
|
-
bootstrapCount: bootstrapMemories.length,
|
|
209
|
-
}, '项目初始化完成');
|
|
210
|
-
return {
|
|
211
|
-
projectPath,
|
|
212
|
-
projectName: name,
|
|
213
|
-
memoraDir,
|
|
214
|
-
dbPath: join(this.agentDataDir, 'memora.db'),
|
|
215
|
-
fileStore: projectFileStore,
|
|
216
|
-
index,
|
|
217
|
-
security,
|
|
218
|
-
bootstrapMemories,
|
|
219
|
-
loadResult,
|
|
220
|
-
};
|
|
176
|
+
const { index, loadResult, projectFileStore } = await this.loadAllResources(memoraDir, configDir);
|
|
177
|
+
// 4) 构建并返回项目上下文
|
|
178
|
+
return this.buildProjectContext(projectPath, projectName, memoraDir, index, projectFileStore, loadResult, configDir);
|
|
221
179
|
}
|
|
222
180
|
catch (err) {
|
|
223
|
-
//
|
|
181
|
+
// 后续步骤失败时释放锁并重置状态,避免锁文件残留导致下次启动检测失败
|
|
224
182
|
await this.releaseLock().catch((releaseErr) => {
|
|
225
183
|
logger.warn({ err: releaseErr }, '释放项目锁失败');
|
|
226
184
|
});
|
|
@@ -229,6 +187,83 @@ export class ProjectManager {
|
|
|
229
187
|
throw err;
|
|
230
188
|
}
|
|
231
189
|
}
|
|
190
|
+
/**
|
|
191
|
+
* 加载两层记忆资源
|
|
192
|
+
*
|
|
193
|
+
* 职责:确保 Agent 级存储 + 扫描项目级 + 扫描 Agent 级配置,合并加载结果。
|
|
194
|
+
*
|
|
195
|
+
* @param memoraDir 项目 .memora/ 目录
|
|
196
|
+
* @param configDir Agent 级配置目录(可选)
|
|
197
|
+
* @returns index 存储实例 + loadResult 合并加载结果 + projectFileStore 项目级 FileStore
|
|
198
|
+
*/
|
|
199
|
+
async loadAllResources(memoraDir, configDir) {
|
|
200
|
+
// Agent 级共享资源(memora.db 只有一个)
|
|
201
|
+
const { index } = await this.ensureAgentResources();
|
|
202
|
+
// 合并加载结果(两层扫描汇总)
|
|
203
|
+
const loadResult = { loaded: 0, skipped: 0, errors: [] };
|
|
204
|
+
// 1) 项目级 FileStore:扫描 projectPath/.memora/ 下的 rules/ + skills/
|
|
205
|
+
const projectFileStore = new FileStore(memoraDir);
|
|
206
|
+
const projectLoader = new MemoryLoader(projectFileStore, index);
|
|
207
|
+
const projectResult = await projectLoader.loadAllToIndex();
|
|
208
|
+
loadResult.loaded += projectResult.loaded;
|
|
209
|
+
loadResult.skipped += projectResult.skipped;
|
|
210
|
+
loadResult.errors.push(...projectResult.errors);
|
|
211
|
+
// 2) Agent 级 FileStore:扫描 configDir 下的所有配置(rules/skills/personas/tools)
|
|
212
|
+
if (configDir) {
|
|
213
|
+
const configFileStore = new FileStore(configDir);
|
|
214
|
+
const configLoader = new MemoryLoader(configFileStore, index);
|
|
215
|
+
const configResult = await configLoader.loadAllToIndex();
|
|
216
|
+
loadResult.loaded += configResult.loaded;
|
|
217
|
+
loadResult.skipped += configResult.skipped;
|
|
218
|
+
loadResult.errors.push(...configResult.errors);
|
|
219
|
+
}
|
|
220
|
+
return { index, loadResult, projectFileStore };
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* 构建项目上下文
|
|
224
|
+
*
|
|
225
|
+
* 职责:bootstrap 过滤 + 安全守卫创建 + 项目注册 + 日志 + 返回上下文。
|
|
226
|
+
*
|
|
227
|
+
* @param projectPath 项目根目录
|
|
228
|
+
* @param projectName 项目名称(可选,默认取目录名)
|
|
229
|
+
* @param memoraDir 项目 .memora/ 目录
|
|
230
|
+
* @param index 存储实例
|
|
231
|
+
* @param projectFileStore 项目级 FileStore
|
|
232
|
+
* @param loadResult 加载结果
|
|
233
|
+
* @param configDir Agent 级配置目录(用于安全守卫创建)
|
|
234
|
+
* @returns 完整的项目上下文
|
|
235
|
+
*/
|
|
236
|
+
buildProjectContext(projectPath, projectName, memoraDir, index, projectFileStore, loadResult, configDir) {
|
|
237
|
+
// bootstrap 过滤:按 source 获取 rule + skill 必召记忆(跳过 persona,由 PersonaManager 管理)
|
|
238
|
+
const rules = index.getBySource(SOURCE_LABELS.RULE);
|
|
239
|
+
const skills = index.getBySource(SOURCE_LABELS.SKILL);
|
|
240
|
+
const bootstrapMemories = [...rules, ...skills];
|
|
241
|
+
// 安全守卫由 Agent 层注入的工厂函数创建,解除 memory→security 反向依赖
|
|
242
|
+
const security = this.createSecurityGuard
|
|
243
|
+
? this.createSecurityGuard(projectPath, memoraDir, configDir, this.agentDataDir)
|
|
244
|
+
: null;
|
|
245
|
+
// 注册到项目表
|
|
246
|
+
const name = projectName || this.inferProjectName(projectPath);
|
|
247
|
+
this.registerProject(projectPath, name);
|
|
248
|
+
logger.info({
|
|
249
|
+
projectPath,
|
|
250
|
+
projectName: name,
|
|
251
|
+
memoraDir,
|
|
252
|
+
loaded: loadResult.loaded,
|
|
253
|
+
bootstrapCount: bootstrapMemories.length,
|
|
254
|
+
}, '项目初始化完成');
|
|
255
|
+
return {
|
|
256
|
+
projectPath,
|
|
257
|
+
projectName: name,
|
|
258
|
+
memoraDir,
|
|
259
|
+
dbPath: join(this.agentDataDir, 'memora.db'),
|
|
260
|
+
fileStore: projectFileStore,
|
|
261
|
+
index,
|
|
262
|
+
security,
|
|
263
|
+
bootstrapMemories,
|
|
264
|
+
loadResult,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
232
267
|
/**
|
|
233
268
|
* 关闭当前项目
|
|
234
269
|
* 释放锁文件,但不关闭 Agent 级数据库(memora.db 是共享的)
|
|
@@ -280,7 +315,7 @@ export class ProjectManager {
|
|
|
280
315
|
const entry = {
|
|
281
316
|
path: projectPath,
|
|
282
317
|
name,
|
|
283
|
-
lastOpened:
|
|
318
|
+
lastOpened: nowIso(),
|
|
284
319
|
};
|
|
285
320
|
if (existing >= 0) {
|
|
286
321
|
registry[existing] = entry;
|
|
@@ -342,7 +377,7 @@ export class ProjectManager {
|
|
|
342
377
|
// 写入新锁
|
|
343
378
|
const lockInfo = {
|
|
344
379
|
pid: process.pid,
|
|
345
|
-
acquiredAt:
|
|
380
|
+
acquiredAt: nowIso(),
|
|
346
381
|
hostname: hostname(),
|
|
347
382
|
};
|
|
348
383
|
await mkdir(memoraDir, { recursive: true });
|
|
@@ -369,8 +404,9 @@ export class ProjectManager {
|
|
|
369
404
|
}
|
|
370
405
|
/**
|
|
371
406
|
* 检查进程是否存活
|
|
372
|
-
*
|
|
373
|
-
*
|
|
407
|
+
*
|
|
408
|
+
* 跨平台统一使用 process.kill(pid, 0) 探测进程存活
|
|
409
|
+
* (Windows 上 process.kill(pid, 0) 同样有效)
|
|
374
410
|
*/
|
|
375
411
|
isProcessAlive(pid) {
|
|
376
412
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectManager.js","sourceRoot":"","sources":["../../src/memory/projectManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"projectManager.js","sourceRoot":"","sources":["../../src/memory/projectManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EACL,UAAU,EACV,SAAS,EACT,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAe,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAmDzC,uDAAuD;AACvD,6CAA6C;AAE7C;;;;;GAKG;AACH,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,CACL,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,QAAQ;QAChC,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,QAAQ;QACvC,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,QAAQ,CACtC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,CACL,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,QAAQ;QACjC,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,QAAQ;QACjC,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,QAAQ,CACxC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,OAAO,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AACtC,CAAC;AA2BD;;;;;;;GAOG;AACH,MAAM,OAAO,cAAc;IACzB,cAAc;IACG,YAAY,CAAS;IACtC,kCAAkC;IACjB,YAAY,CAAS;IACtC,iCAAiC;IACzB,UAAU,GAA0B,IAAI,CAAC;IACjD,gBAAgB;IACR,kBAAkB,GAAkB,IAAI,CAAC;IACjD,iBAAiB;IACT,eAAe,GAAkB,IAAI,CAAC;IAC9C,+CAA+C;IACvC,eAAe,CAAwB;IAC/C,sCAAsC;IACrB,mBAAmB,CAKjB;IAEnB,YAAY,OAA8B;QACxC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;QACvE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;QAC/B,iCAAiC;QACjC,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QACjF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QACxD,yBAAyB;QACzB,IAAI,CAAC,eAAe,GAAG,OAAO,IAAI,IAAI,CAAC;QACvC,wBAAwB;QACxB,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;IACjD,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,oBAAoB;QAChC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEpD,gBAAgB;YAChB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,yCAAyC;gBACzC,mCAAmC;gBACnC,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,+CAA+C,CAAC,CAAC;gBACpF,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YAC1C,CAAC;QACH,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IACpC,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CAAC,WAAW,CACf,WAAmB,EACnB,WAAoB,EACpB,SAAkB;QAElB,kCAAkC;QAClC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5B,CAAC;QAED,2BAA2B;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC;QACtC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEhD,oCAAoC;QACpC,IAAI,CAAC;YACH,qBAAqB;YACrB,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CACzE,SAAS,EACT,SAAS,CACV,CAAC;YAEF,gBAAgB;YAChB,OAAO,IAAI,CAAC,mBAAmB,CAC7B,WAAW,EACX,WAAW,EACX,SAAS,EACT,KAAK,EACL,gBAAgB,EAChB,UAAU,EACV,SAAS,CACV,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,oCAAoC;YACpC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,UAAmB,EAAE,EAAE;gBACrD,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,SAAS,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACK,KAAK,CAAC,gBAAgB,CAC5B,SAAiB,EACjB,SAAkB;QAMlB,8BAA8B;QAC9B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAEpD,iBAAiB;QACjB,MAAM,UAAU,GAAe,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAErE,+DAA+D;QAC/D,MAAM,gBAAgB,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,aAAa,GAAG,IAAI,YAAY,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAChE,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,cAAc,EAAE,CAAC;QAC3D,UAAU,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC;QAC1C,UAAU,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC;QAC5C,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAEhD,wEAAwE;QACxE,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,eAAe,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YACjD,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;YAC9D,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,cAAc,EAAE,CAAC;YACzD,UAAU,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC;YACzC,UAAU,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC;YAC3C,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;IACjD,CAAC;IAED;;;;;;;;;;;;;OAaG;IACK,mBAAmB,CACzB,WAAmB,EACnB,WAA+B,EAC/B,SAAiB,EACjB,KAAqB,EACrB,gBAA2B,EAC3B,UAAsB,EACtB,SAA6B;QAE7B,6EAA6E;QAC7E,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,iBAAiB,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC;QAEhD,iDAAiD;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB;YACvC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;YAChF,CAAC,CAAC,IAAI,CAAC;QAET,SAAS;QACT,MAAM,IAAI,GAAG,WAAW,IAAI,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC/D,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAExC,MAAM,CAAC,IAAI,CACT;YACE,WAAW;YACX,WAAW,EAAE,IAAI;YACjB,SAAS;YACT,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,cAAc,EAAE,iBAAiB,CAAC,MAAM;SACzC,EACD,SAAS,CACV,CAAC;QAEF,OAAO;YACL,WAAW;YACX,WAAW,EAAE,IAAI;YACjB,SAAS;YACT,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC;YAC5C,SAAS,EAAE,gBAAgB;YAC3B,KAAK;YACL,QAAQ;YACR,iBAAiB;YACjB,UAAU;SACX,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY;QAChB,6DAA6D;QAC7D,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5B,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;YAC5B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC;YACzC,CAAC;YACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,WAAmB,EAAE,IAAY;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACrC,mCAAmC;QACnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;QAE/F,MAAM,KAAK,GAAiB;YAC1B,IAAI,EAAE,WAAW;YACjB,IAAI;YACJ,UAAU,EAAE,MAAM,EAAE;SACrB,CAAC;QAEF,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YAClB,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,WAAmB;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACrC,iCAAiC;QACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,WAAW,CAAC,SAAiB;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE1C,IAAI,CAAC;YACH,eAAe;YACf,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC9C,qDAAqD;YACrD,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxB,kBAAkB;gBAClB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,cAAc,CAAC,CAAC;gBAChD,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,CAAC;YAEpB,WAAW;YACX,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClC,MAAM,CAAC,IAAI,CACT,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EACvE,gCAAgC,CACjC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,SAAS;gBACT,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC;gBACjD,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,2CAA2C;YAC3C,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;YAC5E,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;QAED,OAAO;QACP,MAAM,QAAQ,GAAa;YACzB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,UAAU,EAAE,MAAM,EAAE;YACpB,QAAQ,EAAE,QAAQ,EAAE;SACrB,CAAC;QAEF,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW;QACvB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU,CAAC,QAAgB;QACvC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,mBAAmB,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,cAAc,CAAC,GAAW;QAChC,IAAI,CAAC;YACH,4BAA4B;YAC5B,+CAA+C;YAC/C,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,gBAAgB,CAAC,WAAmB;QAC1C,OAAO,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC;IAED;;;OAGG;IACK,gBAAgB,CAAC,WAAmB;QAC1C,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAChE,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC;IAC9C,CAAC;IAED;;;;;OAKG;IACK,YAAY;QAClB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACrD,2DAA2D;YAC3D,sBAAsB;YACtB,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvE,qBAAqB;gBACrB,MAAM,CAAC,IAAI,CACT,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,EACxD,sBAAsB,CACvB,CAAC;YACJ,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,qCAAqC;YACrC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,iBAAiB,CAAC,CAAC;YACvF,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,OAAuB;QAC3C,SAAS;QACT,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QAC3D,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9E,CAAC;CACF"}
|
package/dist/memory/recall.d.ts
CHANGED
|
@@ -5,17 +5,13 @@
|
|
|
5
5
|
* 基于基元驱动模型,通过 source 开放字符串区分记忆来源,
|
|
6
6
|
* 通过双通道(语义 + 关键词)召回,无需独立管理器
|
|
7
7
|
*
|
|
8
|
+
* 双通道融合排序算法在 hybridMerge.ts 中实现,与 memoryInspector.searchHybrid() 共享。
|
|
9
|
+
*
|
|
8
10
|
* 详见 ADR-004 · 记忆统一模型 + architecture_philosophy_rules.md §6 增量召回
|
|
9
11
|
*/
|
|
10
12
|
import type { Memory } from '../memory/types.js';
|
|
11
13
|
import type { IMemoryStorage } from '../memory/storageInterface.js';
|
|
12
14
|
import type { VectorStore } from '../memory/vectorStore.js';
|
|
13
|
-
/** 语义搜索召回倍率(在最终 limit 基础上多召回一些,供后续融合排序) */
|
|
14
|
-
export declare const RECALL_LIMIT_MULTIPLIER = 2;
|
|
15
|
-
/** 综合排序时语义相似度权重 */
|
|
16
|
-
export declare const VECTOR_SCORE_WEIGHT = 0.6;
|
|
17
|
-
/** 综合排序时记忆 score 权重 */
|
|
18
|
-
export declare const MEMORY_SCORE_WEIGHT = 0.4;
|
|
19
15
|
/** 一天对应的毫秒数 */
|
|
20
16
|
export declare const ONE_DAY_MS: number;
|
|
21
17
|
/**
|
|
@@ -34,7 +30,7 @@ export declare function extractKeywords(input: string): string[];
|
|
|
34
30
|
export interface RecallOptions {
|
|
35
31
|
/** 返回数量上限(默认 5) */
|
|
36
32
|
limit?: number;
|
|
37
|
-
/** 排除的 source 标签(默认排除 persona
|
|
33
|
+
/** 排除的 source 标签(默认排除 persona、rule、skill——已单独注入 system prompt 的记忆) */
|
|
38
34
|
excludeSources?: string[];
|
|
39
35
|
/** 向量存储(可选,提供时启用语义搜索) */
|
|
40
36
|
vectorStore?: VectorStore;
|
|
@@ -47,25 +43,18 @@ export interface RecallOptions {
|
|
|
47
43
|
* 双通道召回策略:
|
|
48
44
|
* 1. 语义搜索(VectorStore 可用时):向量余弦相似度
|
|
49
45
|
* 2. 关键词搜索(兜底):LIKE 匹配
|
|
50
|
-
* 3. 两路结果合并去重,按 score + similarity
|
|
51
|
-
* 4. 排除已单独注入的记忆(persona、rule)
|
|
46
|
+
* 3. 两路结果合并去重,按 score + similarity 综合排序(委托给 hybridMerge)
|
|
47
|
+
* 4. 排除已单独注入的记忆(persona、rule、skill)
|
|
52
48
|
* 5. 返回 top N
|
|
53
49
|
*
|
|
50
|
+
* 融合排序算法已提取到 hybridMerge.ts,与 searchHybrid() 共享同一实现
|
|
51
|
+
*
|
|
54
52
|
* @param storage - 记忆存储实例
|
|
55
53
|
* @param query - 搜索查询文本
|
|
56
54
|
* @param options - 召回选项
|
|
57
55
|
* @returns 匹配的记忆列表
|
|
58
56
|
*/
|
|
59
57
|
export declare function recall(storage: IMemoryStorage, query: string, options?: RecallOptions): Promise<Memory[]>;
|
|
60
|
-
/**
|
|
61
|
-
* 召回时提升记忆的 score(上限 1.0)
|
|
62
|
-
*
|
|
63
|
-
* 每次被召回时,记忆的 score 略微提升,体现"越常用越重要"。
|
|
64
|
-
*
|
|
65
|
-
* @param memory - 被召回的记忆
|
|
66
|
-
* @param now - 当前时间戳(ISO 8601)
|
|
67
|
-
*/
|
|
68
|
-
export declare function boostScore(memory: Memory, now?: string): void;
|
|
69
58
|
/**
|
|
70
59
|
* 对单条记忆执行衰减计算
|
|
71
60
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../../src/memory/recall.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../../src/memory/recall.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AA2B3D,eAAe;AACf,eAAO,MAAM,UAAU,QAAsB,CAAC;AAE9C;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAUvD;AAID;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,yBAAyB;IACzB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,wBAAwB;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,MAAM,CAC1B,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC,CAgEnB;AAkBD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAcrE"}
|
package/dist/memory/recall.js
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
import { logger } from '../logging/logger.js';
|
|
2
2
|
import { STOPWORDS, SOURCE_LABELS } from '../memory/types.js';
|
|
3
3
|
import { segmentText } from '../utils/segmenter.js';
|
|
4
|
+
import { nowIso } from '../utils/time.js';
|
|
5
|
+
import { hybridMerge, RECALL_LIMIT_MULTIPLIER } from '../memory/hybridMerge.js';
|
|
4
6
|
// ─── 召回与衰减常量 ─────────────────────────────────────
|
|
5
7
|
/** 语义搜索默认相似度阈值 */
|
|
6
8
|
const DEFAULT_MIN_SIMILARITY = 0.3;
|
|
7
|
-
/** 语义搜索召回倍率(在最终 limit 基础上多召回一些,供后续融合排序) */
|
|
8
|
-
export const RECALL_LIMIT_MULTIPLIER = 2;
|
|
9
|
-
/** 综合排序时语义相似度权重 */
|
|
10
|
-
export const VECTOR_SCORE_WEIGHT = 0.6;
|
|
11
|
-
/** 综合排序时记忆 score 权重 */
|
|
12
|
-
export const MEMORY_SCORE_WEIGHT = 0.4;
|
|
13
9
|
/** 每次召回时 score 提升量 */
|
|
14
10
|
const BOOST_INCREMENT = 0.05;
|
|
15
11
|
/** score 上限 */
|
|
@@ -46,10 +42,12 @@ export function extractKeywords(input) {
|
|
|
46
42
|
* 双通道召回策略:
|
|
47
43
|
* 1. 语义搜索(VectorStore 可用时):向量余弦相似度
|
|
48
44
|
* 2. 关键词搜索(兜底):LIKE 匹配
|
|
49
|
-
* 3. 两路结果合并去重,按 score + similarity
|
|
50
|
-
* 4. 排除已单独注入的记忆(persona、rule)
|
|
45
|
+
* 3. 两路结果合并去重,按 score + similarity 综合排序(委托给 hybridMerge)
|
|
46
|
+
* 4. 排除已单独注入的记忆(persona、rule、skill)
|
|
51
47
|
* 5. 返回 top N
|
|
52
48
|
*
|
|
49
|
+
* 融合排序算法已提取到 hybridMerge.ts,与 searchHybrid() 共享同一实现
|
|
50
|
+
*
|
|
53
51
|
* @param storage - 记忆存储实例
|
|
54
52
|
* @param query - 搜索查询文本
|
|
55
53
|
* @param options - 召回选项
|
|
@@ -76,7 +74,7 @@ export async function recall(storage, query, options = {}) {
|
|
|
76
74
|
// ── 通道 2:关键词搜索 ──
|
|
77
75
|
const keywords = extractKeywords(query);
|
|
78
76
|
if (keywords.length > 0) {
|
|
79
|
-
//
|
|
77
|
+
// 关键词搜索失败时降级返回已收集的语义结果,与通道 1 降级策略对称
|
|
80
78
|
try {
|
|
81
79
|
// 使用提取后的关键词组合搜索,避免原始 query 中的停用词/噪声影响匹配
|
|
82
80
|
const keywordResults = storage.search(keywords.join(' '), limit * RECALL_LIMIT_MULTIPLIER);
|
|
@@ -93,17 +91,13 @@ export async function recall(storage, query, options = {}) {
|
|
|
93
91
|
// ── 无任何结果 ──
|
|
94
92
|
if (merged.size === 0)
|
|
95
93
|
return [];
|
|
96
|
-
// ──
|
|
97
|
-
const sorted =
|
|
98
|
-
const scoreA = a.vectorScore * VECTOR_SCORE_WEIGHT + a.memory.score * MEMORY_SCORE_WEIGHT;
|
|
99
|
-
const scoreB = b.vectorScore * VECTOR_SCORE_WEIGHT + b.memory.score * MEMORY_SCORE_WEIGHT;
|
|
100
|
-
return scoreB - scoreA;
|
|
101
|
-
});
|
|
94
|
+
// ── 综合排序:委托给 hybridMerge 纯函数 ──
|
|
95
|
+
const sorted = hybridMerge(merged.values(), limit);
|
|
102
96
|
// ── 召回时提升 score ──
|
|
103
97
|
// 在副本上操作避免污染调用方持有的对象,boost 后写回存储
|
|
104
|
-
const now =
|
|
98
|
+
const now = nowIso();
|
|
105
99
|
const result = [];
|
|
106
|
-
for (const { memory } of sorted
|
|
100
|
+
for (const { memory } of sorted) {
|
|
107
101
|
const copy = { ...memory };
|
|
108
102
|
boostScore(copy, now);
|
|
109
103
|
storage.upsert(copy); // 写回存储,持久化 score 提升
|
|
@@ -120,9 +114,10 @@ export async function recall(storage, query, options = {}) {
|
|
|
120
114
|
* @param memory - 被召回的记忆
|
|
121
115
|
* @param now - 当前时间戳(ISO 8601)
|
|
122
116
|
*/
|
|
123
|
-
|
|
117
|
+
// 模块私有(0 外部消费者,仅 recall.ts 内部调用,与 tokenizeKeywords 同模式)
|
|
118
|
+
function boostScore(memory, now) {
|
|
124
119
|
memory.score = Math.min(SCORE_CEILING, memory.score + BOOST_INCREMENT);
|
|
125
|
-
memory.accessedAt = now ??
|
|
120
|
+
memory.accessedAt = now ?? nowIso();
|
|
126
121
|
}
|
|
127
122
|
/**
|
|
128
123
|
* 对单条记忆执行衰减计算
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recall.js","sourceRoot":"","sources":["../../src/memory/recall.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"recall.js","sourceRoot":"","sources":["../../src/memory/recall.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,14 @@
|
|
|
13
13
|
*
|
|
14
14
|
* 方法签名保持同步语义(与 better-sqlite3 一致),
|
|
15
15
|
* 调用方已有的 `await` 调用仍然安全(await 同步值 = 立即返回)。
|
|
16
|
+
*
|
|
17
|
+
* 软删除语义:
|
|
18
|
+
* - delete(id) 为软删除,写入 deletedAt,不物理移除
|
|
19
|
+
* - 所有查询方法(getById/getBySource/search/count/countBySource/decayScores/getAllSources)
|
|
20
|
+
* 自动过滤 deletedAt != undefined 的记忆
|
|
21
|
+
* - restore(id) 恢复软删除记忆,purge(id) 物理删除
|
|
22
|
+
* - listDeleted(limit) 列出回收站,purgeExpired(before) 清理过期回收站
|
|
23
|
+
* - 详见 ADR-004 v2.1 软删除扩展
|
|
16
24
|
*/
|
|
17
25
|
import type { Memory } from '../memory/types.js';
|
|
18
26
|
/**
|
|
@@ -30,22 +38,81 @@ export interface IMemoryStorage {
|
|
|
30
38
|
*/
|
|
31
39
|
upsert(memory: Memory): void;
|
|
32
40
|
/**
|
|
33
|
-
*
|
|
41
|
+
* 删除记忆(软删除)
|
|
42
|
+
*
|
|
43
|
+
* 语义为"移入回收站":写入 deletedAt 时间戳,不物理移除。
|
|
44
|
+
* - 召回/搜索/列表/统计自动过滤已软删除的记忆
|
|
45
|
+
* - 可通过 restore(id) 恢复
|
|
46
|
+
* - 回收站保留期过后由 purgeExpired(before) 物理清理
|
|
47
|
+
*
|
|
48
|
+
* 对已软删除的记忆调用为 no-op。
|
|
49
|
+
*
|
|
50
|
+
* @param id - 记忆 ID
|
|
34
51
|
*/
|
|
35
52
|
delete(id: string): void;
|
|
36
53
|
/**
|
|
37
|
-
*
|
|
54
|
+
* 恢复软删除的记忆
|
|
55
|
+
*
|
|
56
|
+
* 将 deletedAt 字段清除,使记忆重新出现在召回/搜索/列表中。
|
|
57
|
+
* 对活跃记忆调用为 no-op。
|
|
58
|
+
*
|
|
59
|
+
* @param id - 记忆 ID
|
|
60
|
+
*/
|
|
61
|
+
restore(id: string): void;
|
|
62
|
+
/**
|
|
63
|
+
* 物理删除记忆
|
|
64
|
+
*
|
|
65
|
+
* 从存储中彻底移除,不可恢复。
|
|
66
|
+
* 用于回收站的"彻底删除"操作,或测试环境的强制清理。
|
|
67
|
+
*
|
|
68
|
+
* @param id - 记忆 ID
|
|
69
|
+
*/
|
|
70
|
+
purge(id: string): void;
|
|
71
|
+
/**
|
|
72
|
+
* 列出回收站中的软删除记忆
|
|
73
|
+
*
|
|
74
|
+
* 按 deletedAt 降序(最近删除的在前),便于回收站 UI 展示。
|
|
75
|
+
*
|
|
76
|
+
* @param limit - 返回数量上限(默认 50)
|
|
77
|
+
* @returns 软删除记忆列表(浅拷贝)
|
|
78
|
+
*/
|
|
79
|
+
listDeleted(limit?: number): Memory[];
|
|
80
|
+
/**
|
|
81
|
+
* 按 ID 获取单条软删除记忆
|
|
82
|
+
*
|
|
83
|
+
* 用于 restore/purge 操作前的存在性校验,避免 listDeleted() 默认 50 上限
|
|
84
|
+
* 导致回收站超量时第 51 条之后的记忆无法 restore/purge。
|
|
85
|
+
*
|
|
86
|
+
* @param id - 记忆 ID
|
|
87
|
+
* @returns 软删除记忆(浅拷贝),不存在或未软删除时返回 null
|
|
88
|
+
*/
|
|
89
|
+
getDeletedById(id: string): Memory | null;
|
|
90
|
+
/**
|
|
91
|
+
* 清理过期的软删除记忆
|
|
92
|
+
*
|
|
93
|
+
* 物理删除所有 deletedAt 早于 before 的记忆。
|
|
94
|
+
* 由宿主项目的定时器调用(默认 30 天保留期)。
|
|
95
|
+
*
|
|
96
|
+
* @param before - 时间阈值,deletedAt 早于此值的记忆将被物理删除
|
|
97
|
+
* @returns 被清理的记忆数量
|
|
98
|
+
*/
|
|
99
|
+
purgeExpired(before: Date): number;
|
|
100
|
+
/**
|
|
101
|
+
* 按 ID 获取单条活跃记忆
|
|
102
|
+
*
|
|
103
|
+
* 已软删除的记忆(deletedAt != undefined)返回 null。
|
|
104
|
+
* 如需获取软删除记忆,请使用 listDeleted()。
|
|
38
105
|
*/
|
|
39
106
|
getById(id: string): Memory | null;
|
|
40
107
|
/**
|
|
41
|
-
*
|
|
108
|
+
* 按来源标签获取活跃记忆(自动过滤已软删除的)
|
|
42
109
|
*
|
|
43
110
|
* @param source - 来源标签(如 'persona'、'rule'、'insight')
|
|
44
|
-
* @returns
|
|
111
|
+
* @returns 该来源的所有活跃记忆
|
|
45
112
|
*/
|
|
46
113
|
getBySource(source: string): Memory[];
|
|
47
114
|
/**
|
|
48
|
-
*
|
|
115
|
+
* 关键词搜索活跃记忆(自动过滤已软删除的)
|
|
49
116
|
*
|
|
50
117
|
* 搜索逻辑(宿主实现):
|
|
51
118
|
* 1. 从 query 中提取关键词(推荐使用 Intl.Segmenter 分词 + 停用词过滤)
|
|
@@ -57,25 +124,25 @@ export interface IMemoryStorage {
|
|
|
57
124
|
*
|
|
58
125
|
* @param query - 搜索查询文本
|
|
59
126
|
* @param limit - 返回数量上限(默认 10)
|
|
60
|
-
* @returns
|
|
127
|
+
* @returns 匹配的活跃记忆列表
|
|
61
128
|
*/
|
|
62
129
|
search(query: string, limit?: number): Memory[];
|
|
63
130
|
/**
|
|
64
|
-
*
|
|
131
|
+
* 统计活跃记忆总数(不含已软删除的)
|
|
65
132
|
*
|
|
66
133
|
* 比 search('', largeLimit).length 更高效,避免全量加载数据。
|
|
67
|
-
* 宿主实现应使用 COUNT(*)
|
|
134
|
+
* 宿主实现应使用 COUNT(*) WHERE deleted_at IS NULL。
|
|
68
135
|
*/
|
|
69
136
|
count(): number;
|
|
70
137
|
/**
|
|
71
|
-
*
|
|
138
|
+
* 按来源标签统计活跃记忆数量(不含已软删除的)
|
|
72
139
|
*
|
|
73
140
|
* 比 getBySource(source).length 更高效,避免全量加载对象。
|
|
74
|
-
* 宿主实现应使用 COUNT(*) WHERE source = ?
|
|
141
|
+
* 宿主实现应使用 COUNT(*) WHERE source = ? AND deleted_at IS NULL。
|
|
75
142
|
*/
|
|
76
143
|
countBySource(source: string): number;
|
|
77
144
|
/**
|
|
78
|
-
*
|
|
145
|
+
* 衰减指定来源的活跃记忆 score(自然遗忘机制,跳过已软删除的)
|
|
79
146
|
*
|
|
80
147
|
* 长时间未访问的记忆 score 逐渐降低。
|
|
81
148
|
* 宿主实现(SqliteStorage)可用一条 SQL UPDATE 批量完成,
|
|
@@ -87,10 +154,10 @@ export interface IMemoryStorage {
|
|
|
87
154
|
*/
|
|
88
155
|
decayScores(sources: string[], now: Date): number;
|
|
89
156
|
/**
|
|
90
|
-
* 获取所有 source
|
|
157
|
+
* 获取所有 source 标签及其活跃记忆数量(不含已软删除的)
|
|
91
158
|
*
|
|
92
|
-
*
|
|
93
|
-
* 宿主实现应使用 SQL `SELECT source, COUNT(*) FROM memories GROUP BY source`,
|
|
159
|
+
* 优化:替代 stats()/sourceHealth() 中的全量 search + 逐条遍历,
|
|
160
|
+
* 宿主实现应使用 SQL `SELECT source, COUNT(*) FROM memories WHERE deleted_at IS NULL GROUP BY source`,
|
|
94
161
|
* InMemoryStorage 维护增量更新的 source→count 缓存。
|
|
95
162
|
*
|
|
96
163
|
* @returns source 标签到数量的映射(如 { persona: 3, insight: 12, ... })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storageInterface.d.ts","sourceRoot":"","sources":["../../src/memory/storageInterface.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"storageInterface.d.ts","sourceRoot":"","sources":["../../src/memory/storageInterface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;;;;;;OAOG;IACH,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEtC;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAE1C;;;;;;;;OAQG;IACH,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC;IAEnC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAEnC;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEtC;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEhD;;;;;OAKG;IACH,KAAK,IAAI,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAEtC;;;;;;;;;;OAUG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,GAAG,MAAM,CAAC;IAElD;;;;;;;;OAQG;IACH,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErC;;;;;OAKG;IACH,KAAK,CAAC,IAAI,IAAI,CAAC;CAChB"}
|
package/dist/memory/store.js
CHANGED
|
@@ -9,7 +9,7 @@ import { join, dirname } from 'node:path';
|
|
|
9
9
|
import { SOURCE_LABELS, inferSource } from '../memory/types.js';
|
|
10
10
|
import { parseFrontmatter, serializeFrontmatter as serializeFm } from '../utils/frontmatter.js';
|
|
11
11
|
import { logger } from '../logging/logger.js';
|
|
12
|
-
import { toError } from '../utils/
|
|
12
|
+
import { toError } from '../utils/toError.js';
|
|
13
13
|
/**
|
|
14
14
|
* 已知 source 到文件系统目录的映射
|
|
15
15
|
*
|
package/dist/memory/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/memory/store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAe,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,IAAI,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/memory/store.ts"],"names":[],"mappings":"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"}
|