@zooique/memora 2.0.0 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +272 -0
- package/README.md +150 -38
- package/dist/agent/agent.d.ts +233 -58
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +651 -359
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/assembler.d.ts +29 -13
- package/dist/agent/assembler.d.ts.map +1 -1
- package/dist/agent/assembler.js +79 -44
- package/dist/agent/assembler.js.map +1 -1
- package/dist/agent/builtinToolHandlers.d.ts +26 -1
- package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
- package/dist/agent/builtinToolHandlers.js +73 -1
- package/dist/agent/builtinToolHandlers.js.map +1 -1
- package/dist/agent/constants.d.ts +4 -0
- package/dist/agent/constants.d.ts.map +1 -1
- package/dist/agent/constants.js +4 -0
- package/dist/agent/constants.js.map +1 -1
- package/dist/agent/contextManager.d.ts +8 -0
- package/dist/agent/contextManager.d.ts.map +1 -1
- package/dist/agent/contextManager.js +7 -2
- package/dist/agent/contextManager.js.map +1 -1
- package/dist/agent/guardrail.d.ts +4 -2
- package/dist/agent/guardrail.d.ts.map +1 -1
- package/dist/agent/guardrail.js +13 -5
- package/dist/agent/guardrail.js.map +1 -1
- package/dist/agent/loop.d.ts +58 -14
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +184 -131
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/managers/archiveCoordinator.d.ts +126 -22
- package/dist/agent/managers/archiveCoordinator.d.ts.map +1 -1
- package/dist/agent/managers/archiveCoordinator.js +239 -44
- package/dist/agent/managers/archiveCoordinator.js.map +1 -1
- package/dist/agent/managers/autoConfigRefiner.d.ts.map +1 -1
- package/dist/agent/managers/autoConfigRefiner.js +4 -8
- package/dist/agent/managers/autoConfigRefiner.js.map +1 -1
- package/dist/agent/managers/configManager.d.ts +87 -3
- package/dist/agent/managers/configManager.d.ts.map +1 -1
- package/dist/agent/managers/configManager.js +139 -2
- package/dist/agent/managers/configManager.js.map +1 -1
- package/dist/agent/managers/dedupManager.d.ts +169 -0
- package/dist/agent/managers/dedupManager.d.ts.map +1 -0
- package/dist/agent/managers/dedupManager.js +336 -0
- package/dist/agent/managers/dedupManager.js.map +1 -0
- package/dist/agent/managers/insightExtractor.d.ts.map +1 -1
- package/dist/agent/managers/insightExtractor.js +11 -11
- package/dist/agent/managers/insightExtractor.js.map +1 -1
- package/dist/agent/managers/llmJudgeHelper.d.ts +38 -0
- package/dist/agent/managers/llmJudgeHelper.d.ts.map +1 -0
- package/dist/agent/managers/llmJudgeHelper.js +49 -0
- package/dist/agent/managers/llmJudgeHelper.js.map +1 -0
- package/dist/agent/managers/memoryAdvisor.d.ts +3 -3
- package/dist/agent/managers/memoryAdvisor.d.ts.map +1 -1
- package/dist/agent/managers/memoryAdvisor.js +53 -67
- package/dist/agent/managers/memoryAdvisor.js.map +1 -1
- package/dist/agent/managers/memoryDecayScheduler.d.ts +46 -5
- package/dist/agent/managers/memoryDecayScheduler.d.ts.map +1 -1
- package/dist/agent/managers/memoryDecayScheduler.js +127 -63
- package/dist/agent/managers/memoryDecayScheduler.js.map +1 -1
- package/dist/agent/managers/memoryGovernance.d.ts +56 -0
- package/dist/agent/managers/memoryGovernance.d.ts.map +1 -0
- package/dist/agent/managers/memoryGovernance.js +63 -0
- package/dist/agent/managers/memoryGovernance.js.map +1 -0
- package/dist/agent/managers/memoryInspector.d.ts +32 -157
- package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
- package/dist/agent/managers/memoryInspector.js +70 -363
- package/dist/agent/managers/memoryInspector.js.map +1 -1
- package/dist/agent/managers/relationBuilder.js +2 -2
- package/dist/agent/managers/relationBuilder.js.map +1 -1
- package/dist/agent/managers/sessionArchiver.d.ts +6 -1
- package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
- package/dist/agent/managers/sessionArchiver.js +19 -22
- package/dist/agent/managers/sessionArchiver.js.map +1 -1
- package/dist/agent/managers/streamAccumulator.d.ts +45 -0
- package/dist/agent/managers/streamAccumulator.d.ts.map +1 -0
- package/dist/agent/managers/streamAccumulator.js +40 -0
- package/dist/agent/managers/streamAccumulator.js.map +1 -0
- package/dist/agent/managers/textPolishManager.d.ts.map +1 -1
- package/dist/agent/managers/textPolishManager.js +4 -7
- package/dist/agent/managers/textPolishManager.js.map +1 -1
- package/dist/agent/managers/workProjection.d.ts +16 -1
- package/dist/agent/managers/workProjection.d.ts.map +1 -1
- package/dist/agent/managers/workProjection.js +48 -24
- package/dist/agent/managers/workProjection.js.map +1 -1
- package/dist/agent/toolExecutor.d.ts +22 -2
- package/dist/agent/toolExecutor.d.ts.map +1 -1
- package/dist/agent/toolExecutor.js +28 -3
- package/dist/agent/toolExecutor.js.map +1 -1
- package/dist/agent/types.d.ts +10 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/userFactExtractor.d.ts.map +1 -1
- package/dist/agent/userFactExtractor.js +7 -0
- package/dist/agent/userFactExtractor.js.map +1 -1
- package/dist/config/loader.d.ts +124 -236
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +273 -117
- package/dist/config/loader.js.map +1 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/llm/embedding.d.ts +13 -1
- package/dist/llm/embedding.d.ts.map +1 -1
- package/dist/llm/embedding.js.map +1 -1
- package/dist/llm/factory.d.ts +19 -5
- package/dist/llm/factory.d.ts.map +1 -1
- package/dist/llm/factory.js +19 -37
- package/dist/llm/factory.js.map +1 -1
- package/dist/llm/openaiCompatible.d.ts.map +1 -1
- package/dist/llm/openaiCompatible.js +2 -9
- package/dist/llm/openaiCompatible.js.map +1 -1
- package/dist/logging/logger.d.ts +3 -1
- package/dist/logging/logger.d.ts.map +1 -1
- package/dist/logging/logger.js +47 -50
- package/dist/logging/logger.js.map +1 -1
- package/dist/memory/governance.d.ts +50 -0
- package/dist/memory/governance.d.ts.map +1 -0
- package/dist/memory/governance.js +70 -0
- package/dist/memory/governance.js.map +1 -0
- package/dist/memory/hybridMerge.d.ts +0 -4
- package/dist/memory/hybridMerge.d.ts.map +1 -1
- package/dist/memory/hybridMerge.js +19 -4
- package/dist/memory/hybridMerge.js.map +1 -1
- package/dist/memory/inMemoryRelationStore.d.ts +7 -0
- package/dist/memory/inMemoryRelationStore.d.ts.map +1 -1
- package/dist/memory/inMemoryRelationStore.js +15 -0
- package/dist/memory/inMemoryRelationStore.js.map +1 -1
- package/dist/memory/inMemoryStorage.d.ts +36 -1
- package/dist/memory/inMemoryStorage.d.ts.map +1 -1
- package/dist/memory/inMemoryStorage.js +66 -16
- package/dist/memory/inMemoryStorage.js.map +1 -1
- package/dist/memory/loader.d.ts +2 -0
- package/dist/memory/loader.d.ts.map +1 -1
- package/dist/memory/loader.js +8 -1
- package/dist/memory/loader.js.map +1 -1
- package/dist/memory/lockManager.d.ts +7 -2
- package/dist/memory/lockManager.d.ts.map +1 -1
- package/dist/memory/lockManager.js +31 -5
- package/dist/memory/lockManager.js.map +1 -1
- package/dist/memory/projectManager.d.ts +2 -1
- package/dist/memory/projectManager.d.ts.map +1 -1
- package/dist/memory/projectManager.js +21 -3
- package/dist/memory/projectManager.js.map +1 -1
- package/dist/memory/projectRegistry.d.ts +34 -1
- package/dist/memory/projectRegistry.d.ts.map +1 -1
- package/dist/memory/projectRegistry.js +99 -22
- package/dist/memory/projectRegistry.js.map +1 -1
- package/dist/memory/recall.d.ts +16 -0
- package/dist/memory/recall.d.ts.map +1 -1
- package/dist/memory/recall.js +33 -18
- package/dist/memory/recall.js.map +1 -1
- package/dist/memory/relationStore.d.ts +20 -3
- package/dist/memory/relationStore.d.ts.map +1 -1
- package/dist/memory/sourceValidation.d.ts +11 -0
- package/dist/memory/sourceValidation.d.ts.map +1 -1
- package/dist/memory/sourceValidation.js +24 -2
- package/dist/memory/sourceValidation.js.map +1 -1
- package/dist/memory/storageInterface.d.ts +26 -1
- package/dist/memory/storageInterface.d.ts.map +1 -1
- package/dist/memory/store.d.ts +22 -1
- package/dist/memory/store.d.ts.map +1 -1
- package/dist/memory/store.js +58 -20
- package/dist/memory/store.js.map +1 -1
- package/dist/memory/types.d.ts +44 -31
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/memory/types.js +63 -24
- package/dist/memory/types.js.map +1 -1
- package/dist/memory/userProfile.d.ts +32 -8
- package/dist/memory/userProfile.d.ts.map +1 -1
- package/dist/memory/userProfile.js +105 -44
- package/dist/memory/userProfile.js.map +1 -1
- package/dist/memory/vectorStore.d.ts +16 -22
- package/dist/memory/vectorStore.d.ts.map +1 -1
- package/dist/memory/vectorStore.js +49 -22
- package/dist/memory/vectorStore.js.map +1 -1
- package/dist/persona/personaManager.d.ts +36 -87
- package/dist/persona/personaManager.d.ts.map +1 -1
- package/dist/persona/personaManager.js +131 -230
- package/dist/persona/personaManager.js.map +1 -1
- package/dist/skill/skillManager.d.ts +11 -57
- package/dist/skill/skillManager.d.ts.map +1 -1
- package/dist/skill/skillManager.js +46 -142
- package/dist/skill/skillManager.js.map +1 -1
- package/dist/skill/types.d.ts +2 -3
- package/dist/skill/types.d.ts.map +1 -1
- package/dist/utils/configResourceManager.d.ts +111 -0
- package/dist/utils/configResourceManager.d.ts.map +1 -0
- package/dist/utils/configResourceManager.js +148 -0
- package/dist/utils/configResourceManager.js.map +1 -0
- package/dist/utils/errors.d.ts +17 -0
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +19 -0
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/eventEmitter.d.ts +83 -6
- package/dist/utils/eventEmitter.d.ts.map +1 -1
- package/dist/utils/eventEmitter.js +23 -0
- package/dist/utils/eventEmitter.js.map +1 -1
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +4 -2
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/math.d.ts +11 -0
- package/dist/utils/math.d.ts.map +1 -1
- package/dist/utils/math.js +17 -0
- package/dist/utils/math.js.map +1 -1
- package/dist/utils/segmenter.d.ts +0 -10
- package/dist/utils/segmenter.d.ts.map +1 -1
- package/dist/utils/segmenter.js +10 -1
- package/dist/utils/segmenter.js.map +1 -1
- package/docs/memora-api-reference.md +1235 -0
- package/docs/memora-/346/216/245/345/205/245/346/214/207/345/215/227.md +808 -0
- package/package.json +39 -22
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 配置资源管理器抽象基类 — 消除 SkillManager 与 PersonaManager 的重复结构
|
|
3
|
+
*
|
|
4
|
+
* 共同模式(DRY):
|
|
5
|
+
* - 扫描 configDir/<subdir>/ 中的 .md 文件
|
|
6
|
+
* - 解析 frontmatter keywords
|
|
7
|
+
* - scoreByKeywords 关键词匹配
|
|
8
|
+
* - load → reload → deleteItem 生命周期
|
|
9
|
+
*
|
|
10
|
+
* 分叉点(子类差异化):
|
|
11
|
+
* - createEntry() → 条目构造(Persona 需要 traits 解析,Skill 需要 layer/trigger)
|
|
12
|
+
* - buildSystemPrompt() → 系统提示格式
|
|
13
|
+
* - PersonaManager 额外状态:activePersona / mode / 切换缓冲 → 保留在子类
|
|
14
|
+
* - SkillManager 额外能力:trigger 正则匹配 / register() → 保留在子类
|
|
15
|
+
*
|
|
16
|
+
* 抽象收益验证(§2.2 技术债务的阈值判断):
|
|
17
|
+
* - 2 个使用场景,领域规则大概率会变 → 抽象收益 > 复制成本
|
|
18
|
+
* - 扫描 + 匹配 + 生命周期共 ~60 行重复 → 消除后的维护成本显著降低
|
|
19
|
+
*
|
|
20
|
+
* 复杂度控制(§1.3):
|
|
21
|
+
* - 泛型参数 T 由子类具体化,基类不假设 T 的具体形状
|
|
22
|
+
* - 基类只提供公共基础设施,不引入新概念
|
|
23
|
+
*/
|
|
24
|
+
import { scoreByKeywords } from '../utils/segmenter.js';
|
|
25
|
+
import { logger } from '../logging/logger.js';
|
|
26
|
+
import { resolveSubdir, scanMarkdownDir } from '../utils/scanner.js';
|
|
27
|
+
/**
|
|
28
|
+
* 配置资源管理器 — 抽象基类
|
|
29
|
+
*
|
|
30
|
+
* @typeParam T 子类资源类型(如 Persona / SkillEntry)
|
|
31
|
+
* @typeParam TOptions load() 的可选参数类型
|
|
32
|
+
*/
|
|
33
|
+
export class ConfigResourceManager {
|
|
34
|
+
configDir;
|
|
35
|
+
subdir;
|
|
36
|
+
/** 资源列表缓存 */
|
|
37
|
+
items = [];
|
|
38
|
+
/**
|
|
39
|
+
* @param configDir 配置目录(资源文件在 <configDir>/<subdir>/ 下)
|
|
40
|
+
* @param subdir 资源子目录名(如 'skills'、'personas')
|
|
41
|
+
*/
|
|
42
|
+
constructor(configDir, subdir) {
|
|
43
|
+
this.configDir = configDir;
|
|
44
|
+
this.subdir = subdir;
|
|
45
|
+
}
|
|
46
|
+
// ── 公共 API ──────────────────────────────────────────
|
|
47
|
+
/** 获取资源列表 */
|
|
48
|
+
get list() {
|
|
49
|
+
return this.items;
|
|
50
|
+
}
|
|
51
|
+
// ── 受保护的基础设施(子类调用) ─────────────────────────
|
|
52
|
+
/**
|
|
53
|
+
* 加载资源到缓存(子类在各自的 load() 中调用)
|
|
54
|
+
*
|
|
55
|
+
* @param options 子类透传参数
|
|
56
|
+
* @returns 加载的资源数量
|
|
57
|
+
*/
|
|
58
|
+
async loadItems(options) {
|
|
59
|
+
this.items = await this.scanAndBuild();
|
|
60
|
+
this.onAfterLoad(this.items, options);
|
|
61
|
+
logger.info({ count: this.items.length, names: this.items.map((i) => i.name), subdir: this.subdir }, `${this.subdir} 资源加载完成`);
|
|
62
|
+
return this.items.length;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 重载资源:重新扫描目录 → 更新缓存
|
|
66
|
+
*
|
|
67
|
+
* @returns 重载后的资源数量
|
|
68
|
+
*/
|
|
69
|
+
async reload() {
|
|
70
|
+
const oldCount = this.items.length;
|
|
71
|
+
this.items = await this.scanAndBuild();
|
|
72
|
+
this.onAfterReload(this.items);
|
|
73
|
+
logger.info({ oldCount, newCount: this.items.length, subdir: this.subdir }, `${this.subdir} 资源已重载`);
|
|
74
|
+
return this.items.length;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* 删除资源(从内存缓存中移除)
|
|
78
|
+
*
|
|
79
|
+
* @param name 资源名
|
|
80
|
+
* @returns true 删除成功;false 资源不存在
|
|
81
|
+
*/
|
|
82
|
+
deleteItem(name) {
|
|
83
|
+
const idx = this.items.findIndex((i) => i.name === name);
|
|
84
|
+
if (idx < 0) {
|
|
85
|
+
logger.warn({ name, subdir: this.subdir }, '内存缓存中未找到资源,跳过删除');
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
this.items.splice(idx, 1);
|
|
89
|
+
logger.info({ name, remaining: this.items.length, subdir: this.subdir }, '资源已从内存缓存删除');
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
// ── 关键词匹配(共享实现) ──────────────────────────────
|
|
93
|
+
/**
|
|
94
|
+
* 关键词匹配:遍历资源列表,返回得分最高的资源
|
|
95
|
+
*
|
|
96
|
+
* 子类可覆写此方法以添加额外匹配逻辑(如 trigger 正则匹配)。
|
|
97
|
+
*
|
|
98
|
+
* @param userInput 用户输入文本
|
|
99
|
+
* @param threshold 最低激活阈值(低于此值的匹配忽略)
|
|
100
|
+
* @returns 匹配结果(资源 + 得分),无匹配返回 null
|
|
101
|
+
*/
|
|
102
|
+
findBestKeywordMatch(userInput, threshold) {
|
|
103
|
+
const matches = [];
|
|
104
|
+
for (const item of this.items) {
|
|
105
|
+
if (item.keywords.length === 0)
|
|
106
|
+
continue;
|
|
107
|
+
const score = scoreByKeywords(userInput, item.keywords);
|
|
108
|
+
if (score >= threshold) {
|
|
109
|
+
matches.push({ item, score });
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (matches.length === 0)
|
|
113
|
+
return null;
|
|
114
|
+
// 主排序:得分降序;次排序:name 字母序(保证同分时确定性)
|
|
115
|
+
matches.sort((a, b) => b.score - a.score || a.item.name.localeCompare(b.item.name));
|
|
116
|
+
return matches[0] ?? null;
|
|
117
|
+
}
|
|
118
|
+
// ── 生命周期钩子(子类可选覆写) ──────────────────────────
|
|
119
|
+
/**
|
|
120
|
+
* load() 完成后的回调 — 子类可在此做激活选择等逻辑
|
|
121
|
+
*/
|
|
122
|
+
onAfterLoad(_items, _options) {
|
|
123
|
+
// 默认空实现
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* reload() 完成后的回调 — 子类可在此保持当前激活状态
|
|
127
|
+
*/
|
|
128
|
+
onAfterReload(_items) {
|
|
129
|
+
// 默认空实现
|
|
130
|
+
}
|
|
131
|
+
// ── 私有方法 ──────────────────────────────────────────
|
|
132
|
+
/**
|
|
133
|
+
* 扫描目录 + 构建条目列表
|
|
134
|
+
*/
|
|
135
|
+
async scanAndBuild() {
|
|
136
|
+
const map = new Map();
|
|
137
|
+
const dir = resolveSubdir(this.configDir, this.subdir);
|
|
138
|
+
if (!dir)
|
|
139
|
+
return [];
|
|
140
|
+
const entries = await scanMarkdownDir(dir);
|
|
141
|
+
for (const entry of entries) {
|
|
142
|
+
const item = this.createEntry(entry);
|
|
143
|
+
map.set(entry.name, item);
|
|
144
|
+
}
|
|
145
|
+
return Array.from(map.values());
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=configResourceManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configResourceManager.js","sourceRoot":"","sources":["../../src/utils/configResourceManager.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/errors.d.ts
CHANGED
|
@@ -104,4 +104,21 @@ export declare function toolError(title: string, detail: string | undefined, sug
|
|
|
104
104
|
* 工厂:安全错误(路径越界、黑名单命中、权限不足等)
|
|
105
105
|
*/
|
|
106
106
|
export declare function securityError(title: string, detail: string | undefined, suggestions: string[], cause?: Error): MemoraError;
|
|
107
|
+
/**
|
|
108
|
+
* 判断错误是否为 AbortError(用户主动取消或超时中断)
|
|
109
|
+
*
|
|
110
|
+
* AbortError 可能源于:
|
|
111
|
+
* - AbortController.abort() 触发的 fetch 取消(DOMException with name='AbortError')
|
|
112
|
+
* - 超时机制(setTimeout + abort)触发的 AbortError
|
|
113
|
+
* - 用户主动取消(停止生成按钮)
|
|
114
|
+
*
|
|
115
|
+
* 统一基于 `err.name === 'AbortError'` 判定,兼容:
|
|
116
|
+
* - 原生 DOMException(modern Node 18+ / 浏览器中 DOMException 是 Error 子类)
|
|
117
|
+
* - 普通 Error 子类(name 字段被设为 'AbortError')
|
|
118
|
+
* - toError() 规范化后的 Error
|
|
119
|
+
*
|
|
120
|
+
* @param err 未知类型的错误对象
|
|
121
|
+
* @returns 是否为 AbortError
|
|
122
|
+
*/
|
|
123
|
+
export declare function isAbortError(err: unknown): boolean;
|
|
107
124
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,KAAK,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AAEpF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa;IACxB,qBAAqB;;IAErB,+BAA+B;;IAE/B,iBAAiB;;IAEjB,iCAAiC;;IAEjC,mBAAmB;;IAEnB,+BAA+B;;IAE/B,yBAAyB;;IAEzB,qBAAqB;;IAErB,iBAAiB;;CAET,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAYpF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAEtE;AAGD,UAAU,oBAAoB;IAC5B,qBAAqB;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW;IACX,QAAQ,EAAE,aAAa,CAAC;IACxB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,qBAAqB;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,oCAAoC;IACpC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;gBAEtB,IAAI,EAAE,oBAAoB;IAWtC;;OAEG;IACH,MAAM,IAAI,MAAM;CAYjB;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,KAAK,GACZ,WAAW,CAEb;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAMzD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,KAAK,GACZ,WAAW,CAEb;AAED;;GAEG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,KAAK,GACZ,WAAW,CAEb;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,KAAK,EACb,SAAS,CAAC,EAAE,kBAAkB,GAC7B,WAAW,CAEb;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,KAAK,GACZ,WAAW,CAEb"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,KAAK,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AAEpF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa;IACxB,qBAAqB;;IAErB,+BAA+B;;IAE/B,iBAAiB;;IAEjB,iCAAiC;;IAEjC,mBAAmB;;IAEnB,+BAA+B;;IAE/B,yBAAyB;;IAEzB,qBAAqB;;IAErB,iBAAiB;;CAET,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAYpF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAEtE;AAGD,UAAU,oBAAoB;IAC5B,qBAAqB;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW;IACX,QAAQ,EAAE,aAAa,CAAC;IACxB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,qBAAqB;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,oCAAoC;IACpC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;gBAEtB,IAAI,EAAE,oBAAoB;IAWtC;;OAEG;IACH,MAAM,IAAI,MAAM;CAYjB;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,KAAK,GACZ,WAAW,CAEb;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAMzD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,KAAK,GACZ,WAAW,CAEb;AAED;;GAEG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,KAAK,GACZ,WAAW,CAEb;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,KAAK,EACb,SAAS,CAAC,EAAE,kBAAkB,GAC7B,WAAW,CAEb;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,KAAK,GACZ,WAAW,CAEb;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAElD"}
|
package/dist/utils/errors.js
CHANGED
|
@@ -134,5 +134,24 @@ export function toolError(title, detail, suggestions, cause, errorCode) {
|
|
|
134
134
|
export function securityError(title, detail, suggestions, cause) {
|
|
135
135
|
return new MemoraError({ title, detail, suggestions, category: 'security', cause });
|
|
136
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* 判断错误是否为 AbortError(用户主动取消或超时中断)
|
|
139
|
+
*
|
|
140
|
+
* AbortError 可能源于:
|
|
141
|
+
* - AbortController.abort() 触发的 fetch 取消(DOMException with name='AbortError')
|
|
142
|
+
* - 超时机制(setTimeout + abort)触发的 AbortError
|
|
143
|
+
* - 用户主动取消(停止生成按钮)
|
|
144
|
+
*
|
|
145
|
+
* 统一基于 `err.name === 'AbortError'` 判定,兼容:
|
|
146
|
+
* - 原生 DOMException(modern Node 18+ / 浏览器中 DOMException 是 Error 子类)
|
|
147
|
+
* - 普通 Error 子类(name 字段被设为 'AbortError')
|
|
148
|
+
* - toError() 规范化后的 Error
|
|
149
|
+
*
|
|
150
|
+
* @param err 未知类型的错误对象
|
|
151
|
+
* @returns 是否为 AbortError
|
|
152
|
+
*/
|
|
153
|
+
export function isAbortError(err) {
|
|
154
|
+
return err instanceof Error && err.name === 'AbortError';
|
|
155
|
+
}
|
|
137
156
|
// toError 实现位于 ./toError.ts(纯逻辑,零依赖),此处 re-export 保持向后兼容
|
|
138
157
|
//# sourceMappingURL=errors.js.map
|
package/dist/utils/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,30 @@
|
|
|
1
|
-
/** Agent
|
|
2
|
-
export
|
|
1
|
+
/** Agent 事件名常量(运行时真理源,与下方 AgentEventMap 键集一致) */
|
|
2
|
+
export declare const AGENT_EVENTS: {
|
|
3
|
+
readonly memoryAdded: "memoryAdded";
|
|
4
|
+
readonly personaSwitched: "personaSwitched";
|
|
5
|
+
readonly decayCompleted: "decayCompleted";
|
|
6
|
+
readonly memoryRecalled: "memoryRecalled";
|
|
7
|
+
readonly sessionForked: "sessionForked";
|
|
8
|
+
readonly insightExtracted: "insightExtracted";
|
|
9
|
+
readonly conflictDetected: "conflictDetected";
|
|
10
|
+
readonly projectSwitched: "projectSwitched";
|
|
11
|
+
readonly skillMatched: "skillMatched";
|
|
12
|
+
readonly archiveFailed: "archiveFailed";
|
|
13
|
+
readonly contextTruncated: "contextTruncated";
|
|
14
|
+
readonly configReloaded: "configReloaded";
|
|
15
|
+
readonly guardrailError: "guardrailError";
|
|
16
|
+
readonly archiveModeChanged: "archiveModeChanged";
|
|
17
|
+
readonly personaSwitchLocked: "personaSwitchLocked";
|
|
18
|
+
readonly workProjectionGenerated: "workProjectionGenerated";
|
|
19
|
+
readonly boostPersistFailed: "boostPersistFailed";
|
|
20
|
+
readonly dedupCompleted: "dedupCompleted";
|
|
21
|
+
};
|
|
22
|
+
/** 事件名联合类型(由 AGENT_EVENTS 推导,单一真理源,新增事件只需在此对象加一项) */
|
|
23
|
+
export type AgentEventName = keyof typeof AGENT_EVENTS;
|
|
24
|
+
/** 运行时校验用 Set(由 AGENT_EVENTS 派生) */
|
|
25
|
+
export declare const AGENT_EVENT_SET: ReadonlySet<string>;
|
|
26
|
+
/** Agent 事件映射表(事件名 → 事件载荷类型),键集受 AgentEventName 约束 */
|
|
27
|
+
export interface AgentEventMap extends Record<AgentEventName, unknown> {
|
|
3
28
|
/** 记忆被写入存储(insight 提取、rule 注入、skill 注入等) */
|
|
4
29
|
memoryAdded: {
|
|
5
30
|
id: string;
|
|
@@ -51,14 +76,66 @@ export interface AgentEventMap {
|
|
|
51
76
|
};
|
|
52
77
|
/** 归档操作失败(fire-and-forget catch 分支发射,宿主可通知用户) */
|
|
53
78
|
archiveFailed: {
|
|
54
|
-
/** 失败阶段:profile(用户画像)/ insight
|
|
55
|
-
stage: 'profile' | 'insight';
|
|
79
|
+
/** 失败阶段:profile(用户画像)/ insight(洞察提取)/ content(会话内容归档) */
|
|
80
|
+
stage: 'profile' | 'insight' | 'content';
|
|
56
81
|
/** 失败原因摘要(error.message,截断 200 字符避免 payload 过大) */
|
|
57
82
|
message: string;
|
|
58
83
|
};
|
|
84
|
+
/** 上下文窗口截断(消息超出 token 上限被裁剪,宿主可通知用户消息被丢弃) */
|
|
85
|
+
contextTruncated: {
|
|
86
|
+
/** 被裁剪掉的消息数量 */
|
|
87
|
+
skippedCount: number;
|
|
88
|
+
/** 保留的消息数量 */
|
|
89
|
+
keptCount: number;
|
|
90
|
+
};
|
|
91
|
+
/** 配置热重载完成(含对话期间暂存后补执行的 reload) */
|
|
92
|
+
configReloaded: {
|
|
93
|
+
/** 重载来源(persona/rule/skill/guardrail) */
|
|
94
|
+
source: string;
|
|
95
|
+
};
|
|
96
|
+
/** Guardrail 规则正则编译失败(安全放行但应通知用户规则未生效) */
|
|
97
|
+
guardrailError: {
|
|
98
|
+
/** 规则原文(截断 100 字符) */
|
|
99
|
+
rule: string;
|
|
100
|
+
/** 编译失败原因 */
|
|
101
|
+
message: string;
|
|
102
|
+
};
|
|
103
|
+
/** 归档模式切换 */
|
|
104
|
+
archiveModeChanged: {
|
|
105
|
+
/** 切换前模式 */
|
|
106
|
+
from: string;
|
|
107
|
+
/** 切换后模式 */
|
|
108
|
+
to: string;
|
|
109
|
+
};
|
|
110
|
+
/** 角色切换锁定状态变化(防抖期间用户尝试切换被拒绝时通知) */
|
|
111
|
+
personaSwitchLocked: {
|
|
112
|
+
/** 锁定原因 */
|
|
113
|
+
reason: string;
|
|
114
|
+
/** 锁定时长(秒) */
|
|
115
|
+
lockedSeconds: number;
|
|
116
|
+
};
|
|
117
|
+
/** 作品投影生成/更新(宿主可据此刷新作品面板) */
|
|
118
|
+
workProjectionGenerated: {
|
|
119
|
+
/** 源文件路径 */
|
|
120
|
+
sourcePath: string;
|
|
121
|
+
/** 投影摘要 */
|
|
122
|
+
summary: string;
|
|
123
|
+
};
|
|
124
|
+
/** boost score 持久化失败(宿主可通知用户记忆权重可能丢失) */
|
|
125
|
+
boostPersistFailed: {
|
|
126
|
+
/** 记忆 ID */
|
|
127
|
+
memoryId: string;
|
|
128
|
+
/** 失败原因 */
|
|
129
|
+
message: string;
|
|
130
|
+
};
|
|
131
|
+
/** 语义去重完成(宿主可据此刷新记忆面板) */
|
|
132
|
+
dedupCompleted: {
|
|
133
|
+
/** 被降级的记忆数 */
|
|
134
|
+
deduplicatedCount: number;
|
|
135
|
+
/** 被降级的记忆 ID 列表 */
|
|
136
|
+
demotedIds: string[];
|
|
137
|
+
};
|
|
59
138
|
}
|
|
60
|
-
/** 事件名联合类型 */
|
|
61
|
-
export type AgentEventName = keyof AgentEventMap;
|
|
62
139
|
/** 事件处理器类型 */
|
|
63
140
|
export type AgentEventHandler<T> = (event: T) => void;
|
|
64
141
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventEmitter.d.ts","sourceRoot":"","sources":["../../src/utils/eventEmitter.ts"],"names":[],"mappings":"AAaA,
|
|
1
|
+
{"version":3,"file":"eventEmitter.d.ts","sourceRoot":"","sources":["../../src/utils/eventEmitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,29 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { getLogger } from '../utils/loggerHolder.js';
|
|
12
12
|
import { toError } from '../utils/toError.js';
|
|
13
|
+
/** Agent 事件名常量(运行时真理源,与下方 AgentEventMap 键集一致) */
|
|
14
|
+
export const AGENT_EVENTS = {
|
|
15
|
+
memoryAdded: 'memoryAdded',
|
|
16
|
+
personaSwitched: 'personaSwitched',
|
|
17
|
+
decayCompleted: 'decayCompleted',
|
|
18
|
+
memoryRecalled: 'memoryRecalled',
|
|
19
|
+
sessionForked: 'sessionForked',
|
|
20
|
+
insightExtracted: 'insightExtracted',
|
|
21
|
+
conflictDetected: 'conflictDetected',
|
|
22
|
+
projectSwitched: 'projectSwitched',
|
|
23
|
+
skillMatched: 'skillMatched',
|
|
24
|
+
archiveFailed: 'archiveFailed',
|
|
25
|
+
contextTruncated: 'contextTruncated',
|
|
26
|
+
configReloaded: 'configReloaded',
|
|
27
|
+
guardrailError: 'guardrailError',
|
|
28
|
+
archiveModeChanged: 'archiveModeChanged',
|
|
29
|
+
personaSwitchLocked: 'personaSwitchLocked',
|
|
30
|
+
workProjectionGenerated: 'workProjectionGenerated',
|
|
31
|
+
boostPersistFailed: 'boostPersistFailed',
|
|
32
|
+
dedupCompleted: 'dedupCompleted',
|
|
33
|
+
};
|
|
34
|
+
/** 运行时校验用 Set(由 AGENT_EVENTS 派生) */
|
|
35
|
+
export const AGENT_EVENT_SET = new Set(Object.values(AGENT_EVENTS));
|
|
13
36
|
/**
|
|
14
37
|
* 类型安全的事件发射器
|
|
15
38
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventEmitter.js","sourceRoot":"","sources":["../../src/utils/eventEmitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"eventEmitter.js","sourceRoot":"","sources":["../../src/utils/eventEmitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,iDAAiD;AACjD,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,WAAW,EAAE,aAAa;IAC1B,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;IAChC,aAAa,EAAE,eAAe;IAC9B,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;IACpC,eAAe,EAAE,iBAAiB;IAClC,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,gBAAgB,EAAE,kBAAkB;IACpC,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;IAChC,kBAAkB,EAAE,oBAAoB;IACxC,mBAAmB,EAAE,qBAAqB;IAC1C,uBAAuB,EAAE,yBAAyB;IAClD,kBAAkB,EAAE,oBAAoB;IACxC,cAAc,EAAE,gBAAgB;CACxB,CAAC;AAKX,oCAAoC;AACpC,MAAM,CAAC,MAAM,eAAe,GAAwB,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;AA0FzF;;;;;GAKG;AACH,MAAM,OAAO,iBAAiB;IACX,SAAS,GAAG,IAAI,GAAG,EAAyC,CAAC;IAE9E;;;;OAIG;IACH,EAAE,CAAoC,KAAQ,EAAE,OAAqC;QACnF,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,OAAmC,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAoC,KAAQ,EAAE,OAAqC;QACpF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,OAAmC,CAAC,CAAC;IACzE,CAAC;IAED;;;;OAIG;IACH,IAAI,CACF,KAAQ,EACR,OAAqC;QAErC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAiB,EAAE,EAAE;YACrC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAuC,CAAC,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAiC,CAAC;QACnC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACO,IAAI,CAAoC,KAAQ,EAAE,OAAoB;QAC9E,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QACnC,KAAK,MAAM,OAAO,IAAI,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,OAAO,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACO,kBAAkB;QAC1B,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/utils/frontmatter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG;IAC7C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;CACd,
|
|
1
|
+
{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/utils/frontmatter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG;IAC7C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;CACd,CAwBA;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAKhF"}
|
|
@@ -18,8 +18,10 @@
|
|
|
18
18
|
* @returns `{ frontmatter, body }`——frontmatter 为键值对对象,body 为 frontmatter 之后的内容
|
|
19
19
|
*/
|
|
20
20
|
export function parseFrontmatter(raw) {
|
|
21
|
-
const normalized = raw.replace(/\r\n/g, '\n');
|
|
22
|
-
|
|
21
|
+
const normalized = raw.replace(/\r\n/g, '\n').replace(/\n+$/, '');
|
|
22
|
+
// 结束 `---` 后允许可选换行(\n?),兼容"以 --- 收尾无尾随换行"的合法文件;
|
|
23
|
+
// 已先规整掉末尾换行(\n+$),避免"文件以 --- 结尾"被误判为不匹配而整体落入 body。
|
|
24
|
+
const match = normalized.match(/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/);
|
|
23
25
|
// 仅当结构不匹配时返回 fallback;空 frontmatter 块和空 body 块为合法输入
|
|
24
26
|
if (!match) {
|
|
25
27
|
return { frontmatter: {}, body: raw };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../src/utils/frontmatter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAI1C,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../src/utils/frontmatter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAI1C,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAClE,gDAAgD;IAChD,mDAAmD;IACnD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACrE,oDAAoD;IACpD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACxC,CAAC;IAED,mEAAmE;IACnE,8CAA8C;IAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,WAAW,GAA2B,EAAE,CAAC;IAC/C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,GAAG,GAAG,CAAC;YAAE,SAAS;QACtB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC;YAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAmC;IACtE,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;SAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC;SAChD,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;SAC7B,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
|
package/dist/utils/math.d.ts
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 数学工具函数
|
|
3
3
|
*/
|
|
4
|
+
/**
|
|
5
|
+
* 将数值四舍五入到指定小数位数
|
|
6
|
+
*
|
|
7
|
+
* 替代 `Math.round(x * 10^n) / 10^n` 惯用法,消除 4 处重复
|
|
8
|
+
* (ADR-017 枝叶层 2 次提取原则,3 次阈值已满足)。
|
|
9
|
+
*
|
|
10
|
+
* @param value - 待四舍五入的数值
|
|
11
|
+
* @param decimals - 保留的小数位数(0~20,默认 2)
|
|
12
|
+
* @returns 四舍五入后的数值;value 为 NaN/Infinity 时原样返回
|
|
13
|
+
*/
|
|
14
|
+
export declare function roundTo(value: number, decimals?: number): number;
|
|
4
15
|
export declare function cosineSimilarity(a: number[], b: number[]): number;
|
|
5
16
|
//# sourceMappingURL=math.d.ts.map
|
package/dist/utils/math.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/utils/math.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAajE"}
|
|
1
|
+
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/utils/math.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,MAAM,CAK3D;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAajE"}
|
package/dist/utils/math.js
CHANGED
|
@@ -1,6 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 数学工具函数
|
|
3
3
|
*/
|
|
4
|
+
/**
|
|
5
|
+
* 将数值四舍五入到指定小数位数
|
|
6
|
+
*
|
|
7
|
+
* 替代 `Math.round(x * 10^n) / 10^n` 惯用法,消除 4 处重复
|
|
8
|
+
* (ADR-017 枝叶层 2 次提取原则,3 次阈值已满足)。
|
|
9
|
+
*
|
|
10
|
+
* @param value - 待四舍五入的数值
|
|
11
|
+
* @param decimals - 保留的小数位数(0~20,默认 2)
|
|
12
|
+
* @returns 四舍五入后的数值;value 为 NaN/Infinity 时原样返回
|
|
13
|
+
*/
|
|
14
|
+
export function roundTo(value, decimals = 2) {
|
|
15
|
+
// NaN/Infinity 不参与运算,避免 Math.round 返回意外结果
|
|
16
|
+
if (!Number.isFinite(value))
|
|
17
|
+
return value;
|
|
18
|
+
const factor = 10 ** decimals;
|
|
19
|
+
return Math.round(value * factor) / factor;
|
|
20
|
+
}
|
|
4
21
|
export function cosineSimilarity(a, b) {
|
|
5
22
|
if (a.length !== b.length)
|
|
6
23
|
return 0;
|
package/dist/utils/math.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/utils/math.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAAW,EAAE,CAAW;IACvD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,iDAAiD;QACjD,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxD,OAAO,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,CAAC;AACnD,CAAC"}
|
|
1
|
+
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/utils/math.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;GASG;AACH,MAAM,UAAU,OAAO,CAAC,KAAa,EAAE,QAAQ,GAAG,CAAC;IACjD,0CAA0C;IAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,MAAM,GAAG,EAAE,IAAI,QAAQ,CAAC;IAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAW,EAAE,CAAW;IACvD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,iDAAiD;QACjD,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxD,OAAO,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,CAAC;AACnD,CAAC"}
|
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 关键词匹配评分(Persona/Skill 共享逻辑)
|
|
3
|
-
*
|
|
4
|
-
* 匹配策略:先分词,再对每个关键词做子串搜索(tokens + 原文双保险)。
|
|
5
|
-
* 大小写不敏感,中英文混合友好。
|
|
6
|
-
*
|
|
7
|
-
* @param userInput - 用户输入文本
|
|
8
|
-
* @param keywordList - 待匹配的关键词数组
|
|
9
|
-
* @returns 匹配得分 (0~1),0 表示无命中
|
|
10
|
-
*/
|
|
11
1
|
export declare function scoreByKeywords(userInput: string, keywordList: string[]): number;
|
|
12
2
|
/**
|
|
13
3
|
* 单行分词(用于 LLM 输出的精确切分)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"segmenter.d.ts","sourceRoot":"","sources":["../../src/utils/segmenter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"segmenter.d.ts","sourceRoot":"","sources":["../../src/utils/segmenter.ts"],"names":[],"mappings":"AA2DA,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAgBhF;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAclD;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAEnD;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,aAOpB,CAAC"}
|
package/dist/utils/segmenter.js
CHANGED
|
@@ -43,10 +43,18 @@ function tokenizeKeywords(input) {
|
|
|
43
43
|
* 匹配策略:先分词,再对每个关键词做子串搜索(tokens + 原文双保险)。
|
|
44
44
|
* 大小写不敏感,中英文混合友好。
|
|
45
45
|
*
|
|
46
|
+
* 评分公式:hitCount / Math.min(keywordList.length, KEYWORD_SCORE_DENOMINATOR_MAX)
|
|
47
|
+
*
|
|
48
|
+
* 分母上限 KEYWORD_SCORE_DENOMINATOR_MAX = 3,避免关键词多的角色被惩罚:
|
|
49
|
+
* - 10 个 keywords 命中 2 个:原 2/10=0.2(被误判低置信度),现 2/3=0.67(高置信度)
|
|
50
|
+
* - 2 个 keywords 命中 2 个:原 2/2=1.0,现 2/2=1.0(不变)
|
|
51
|
+
*
|
|
46
52
|
* @param userInput - 用户输入文本
|
|
47
53
|
* @param keywordList - 待匹配的关键词数组
|
|
48
54
|
* @returns 匹配得分 (0~1),0 表示无命中
|
|
49
55
|
*/
|
|
56
|
+
/** 评分分母上限:防止关键词多的角色被惩罚(命中 2 个即视为强匹配) */
|
|
57
|
+
const KEYWORD_SCORE_DENOMINATOR_MAX = 3;
|
|
50
58
|
export function scoreByKeywords(userInput, keywordList) {
|
|
51
59
|
if (keywordList.length === 0)
|
|
52
60
|
return 0;
|
|
@@ -59,7 +67,8 @@ export function scoreByKeywords(userInput, keywordList) {
|
|
|
59
67
|
hitCount++;
|
|
60
68
|
}
|
|
61
69
|
}
|
|
62
|
-
|
|
70
|
+
// 分母取 min(关键词总数, 3):命中 2+ 个即高置信度,不受关键词总量影响
|
|
71
|
+
return hitCount / Math.min(keywordList.length, KEYWORD_SCORE_DENOMINATOR_MAX);
|
|
63
72
|
}
|
|
64
73
|
/**
|
|
65
74
|
* 单行分词(用于 LLM 输出的精确切分)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"segmenter.js","sourceRoot":"","sources":["../../src/utils/segmenter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;AAE1E;;;;;;;;;;;;;;GAcG;AACH,SAAS,gBAAgB,CAAC,KAAa;IACrC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,0BAA0B;IAC1B,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;IAClE,MAAM,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;IAChC,QAAQ;IACR,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;IAC3D,MAAM,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;IAChC,4CAA4C;IAC5C,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"segmenter.js","sourceRoot":"","sources":["../../src/utils/segmenter.ts"],"names":[],"mappings":"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"}
|